Мне в домашнем задании надо сделать программу для высчитывания суммы цифр из введенного числа (максимум четырехзначного) Я написал данный код:
int chislo = int.Parse(Console.ReadLine());
int a = int.Parse(Convert.ToString(chislo)[0].ToString());
int b = int.Parse(Convert.ToString(chislo)[1].ToString());
int c = int.Parse(Convert.ToString(chislo)[2].ToString());
int d = int.Parse(Convert.ToString(chislo)[3].ToString());
if (chislo > 0)
{
if ((chislo < 10))
Console.WriteLine(chislo);
if ((chislo < 100 && chislo > 9))
Console.WriteLine(a + b);
if ((chislo < 1000 && chislo > 100))
Console.WriteLine(a + b + c);
if ((chislo < 10000 && chislo > 1000))
Console.WriteLine(a + b + c + d);
}
else
{
Console.WriteLine("Слишком большое число");
}
Console.ReadLine();
Но при вводе числа менее чем четырехзначного, программа крашится. Я так понял, она просто не может найти переменной d c или b. Как это исправить. Чтобы она работала должным образом.
Другие языки программирования и технологии
Помогите с домашним задание C#
Вот до чего людей доводит незнание целочисленного деления и остатка от деления:
int a = int.Parse(Convert.ToString(chislo)[0].ToString());
А что же будет потом, когда число будет 6 значным, семи?
А дальше еще хуже - 20тизначным - вот тогда, кстати, строки и понадобятся.
Если хотите, как вы, то
Console.ReadLine() в строку, дописать в начале "0000" + строка.
И тогда все будет.
Ветки из if ов тоже не нужны 0 + x = x
Просто a+b+c+d;
И вообще, a,b,c,d - не нужны.
В цикле по i от 0 до 3 надо
результат += int.Parse(Convert.ToString(chislo)[i].ToString());
int a = int.Parse(Convert.ToString(chislo)[0].ToString());
А что же будет потом, когда число будет 6 значным, семи?
А дальше еще хуже - 20тизначным - вот тогда, кстати, строки и понадобятся.
Если хотите, как вы, то
Console.ReadLine() в строку, дописать в начале "0000" + строка.
И тогда все будет.
Ветки из if ов тоже не нужны 0 + x = x
Просто a+b+c+d;
И вообще, a,b,c,d - не нужны.
В цикле по i от 0 до 3 надо
результат += int.Parse(Convert.ToString(chislo)[i].ToString());
Алексей Горяйнов
Немного не понял что мне исправить то? Я с полуслова не понимаю. Новичок же. Объясните пожалуйста.
Никогда не пиши таким образом if'ы. Используй else if.
if
else if
else if
else
if
else if
else if
else
Console.Write("Введите число : ");
char[] x = Console.ReadLine().ToCharArray();
int y = int.Parse(x[0].ToString());
for (int i = 1; i < x.Length; i++)
{
y = y + int.Parse(x[i].ToString());
}
Console.WriteLine("Сумма цифр = " + y);
Console.ReadKey();
И не важно 4 или больше значное число
char[] x = Console.ReadLine().ToCharArray();
int y = int.Parse(x[0].ToString());
for (int i = 1; i < x.Length; i++)
{
y = y + int.Parse(x[i].ToString());
}
Console.WriteLine("Сумма цифр = " + y);
Console.ReadKey();
И не важно 4 или больше значное число
int digit = Convert.ToInt32(Console.ReadLine());
int summ = 0;
int len = (int)Math.Log10(digit) + 1; //получаем количество знаков у числа
if (len > 4) { //если не четырехзначное, то выходим
Console.WriteLine("Слишком большое число");
return;
}
do
{
summ += digit % 10; //Берем остаток от деления на 10 (иначе говоря цифру)
digit /= 10; // Делим число на 10
} while (digit > 0); // Производим деление на 10, пока не получим последнюю цифру
Console.WriteLine(summ);
int summ = 0;
int len = (int)Math.Log10(digit) + 1; //получаем количество знаков у числа
if (len > 4) { //если не четырехзначное, то выходим
Console.WriteLine("Слишком большое число");
return;
}
do
{
summ += digit % 10; //Берем остаток от деления на 10 (иначе говоря цифру)
digit /= 10; // Делим число на 10
} while (digit > 0); // Производим деление на 10, пока не получим последнюю цифру
Console.WriteLine(summ);
Похожие вопросы
- Помогите с домашним заданием по c++
- добрый вечер!помогите пожалуйста решить задание
- Задания C# (массивы, матрицы).
- Пожалуйста! Помогите выбрать: java или c
- помогите решить 2 задание на pascalABC
- Помогите решить задачи на C#
- Вопрос по заданию c#.
- Помошь с заданием c ++
- Помогите написать программу по C++
- помогите написать программу на c++