Przede wszystkim jako nowy użytkownik chciałbym się przywitać. ;)
Od krótkiego czasu uczę się C# z podręcznika "Wstęp do programowania w C# ".
Jednym z zadań jest:
Zadanie 5.8.
Napisz metodę, która oblicza sumę cyfr liczby naturalnej x. W programie głównym wywołaj funkcję dla x wczytanego z klawiatury. Przykładowo jeśli użytkownik wpisze 125, to metoda powinna zwrócić wartość 8 (1+2+5=8).
Z pomysłem na rozwiązanie nie było problemu. Potraktowałem po prostu pobraną liczbę jako ciąg znaków.
namespace Zadanie_5._10_5._8
{
class Program
{
static void SumaCyfr (string liczba)
{
int Suma = 0;
Console.WriteLine("Liczba cyfr:" + liczba.Length); // Sprawdzenie czy poprawnie odczytuje liczbę znaków. Jest OK.
Console.WriteLine("Znak na pierwszym miejscu:" + liczba[0]); //Sprawdzenie czy poprawnie odczytuje znak. Jest OK.
Console.WriteLine("Znak na drugim miejscu:" + liczba[1]);
Console.WriteLine("Znak na trzecim miejscu:" + liczba[2]);
for (int i=0; i<(liczba.Length); i++)
{
Suma = Suma + (Convert.ToInt16(liczba[i])); // Problem jest tutaj. Plan był taki, żeby konwertował znak np. "1" do typu int. Jednak po konwersji "1" przyjmuje wartość 49.
}
Console.WriteLine("Suma cyfr liczby {0} wynosi {1}", liczba, Suma);
}
static void Main(string[] args)
{
string l;
Console.WriteLine("Podaj liczbę całkowitą.");
l = Console.ReadLine(); // Jako przykładową liczbę dałem jak w zadaniu 125.
SumaCyfr(l);
Console.ReadLine();
}
}
}
W czym tkwi problem?
Z góry dzięki za odpowiedzi.