[ Foro de C# ]
Hola! Cómo estáis?
Tengo un problema con el ejercicio 5.5.5, no consigo ver el error de ninguna manera, por lo que no se donde está el fallo en el mismo.
El ejercicio 5.5.5, que copypasteo ((5.5.5) Crea una función "SumaCifras" que reciba un numero cualquiera y que devuelva como resultado la suma de sus dígitos. Por ejemplo, si el número fuera 123 la suma sería 6)
Y el código:
namespace AplicacionNueva
{
class Program
{
public static int SumaCifras(string n)
{
int suma = 0;
for (int i = 0; i <= (n.Length-1); i++)
{
suma += Convert.ToInt32(n[i]);
}
return suma;
}
static void Main(string[] args)
{
string numeros;
Console.WriteLine("Escribe un número: ");
numeros = Console.ReadLine();
Console.WriteLine("\nLa suma total de sus cifras es {0}.", SumaCifras(numeros));
Console.WriteLine("\nPulsa cualquier tecla para salir");
Console.ReadKey();
}
}
}
Creyendo que funcionaría, resulta que al introducir el numero 12 por ejemplo, me da 99!! Ya no se si es que al hacer el casting me da el numero en ascii o yo que sé, pero no consigo hacerlo funcionar... Alguna luz que me guie?
Muchas gracias de antemano :)
En el bucle, cambia la instrucción por esta:
suma += Convert.ToInt32(n[i].ToString());
...y ya funciona correctamente.
Vaya!
Muchas gracias por la solución, pero realmente no entiendo muy bien qué hace el ".ToString()" que hay ahí, quiero decir, si n ya es un string, porqué se cambia otra vez? o realiza otra función en ese momento?
De cualquier manera, muchas gracias por la ayuda.
Ah, vale, corregidme si me equivoco, pero creo que estoy leyendo un Char dentro de un String, por eso hay que pasarlo antes a String de nuevo, me equivoco?
Sí, es eso. La conversión del char te devuelva un entero con el valor del código ASCII del carácter. La conversión de un string te devuelve el valor numérico que expresa la cadena.
Geeeeeeenial.
Muchas gracias por tu ayuda. Ahora lo tengo claro.
Un saludo!
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)