#c#
Вопрос:
На одном из моих занятий мне дали задание написать простую программу, которая объединяет несколько чисел, введенных с консоли, но только суммирует четные. Мне удалось довольно легко подвести итоги, но я не могу понять, как проверить четные числа! Если кто — нибудь сможет понять, как или объяснить новичку, как это сделать, я был бы очень признателен.
Вот полный код на данный момент:
using System; namespace Test_3 { class Program { static void Main(string[] args) { Console.WriteLine("Amount of numbers n = "); var n = int.Parse(Console.ReadLine()); Console.WriteLine("Enter numbers:"); var sum = 0; for (int i = 0; i lt; n; i ) { if (sum%2 == 0) { } else { } var num = int.Parse(Console.ReadLine()); sum = sum num; } Console.WriteLine("The sum of the numbers is " sum); } } }
Комментарии:
1.
if (num % 2 == 0)
? Кажется, вы уже знаете это, но вместо этого вы применяете этоsum
, чтобы ничего не делать, а неnum
так, как вы указываете, что хотите.2. Кроме того, вы никогда не должны использовать
int.Parse(Console.ReadLine())
. единственное самое важное правило в разработке программного обеспечения- никогда не доверять вводу пользователя. используйтеint.TryParse
вместо этого, если вы не хотите, чтобы ваша программа выходила из строя каждый раз, когда пользователь вводитqwe
вместо123
этого .
Ответ №1:
Вы, кажется, уже знаете, как получить четные числа, но вот как это применить!
Console.WriteLine("Amount of numbers n = "); var n = int.Parse(Console.ReadLine()); Console.WriteLine("Enter numbers:"); var sum = 0; for (int i = 0; i lt; n; i ) { var num = int.Parse(Console.ReadLine()); //first read a number from the console if (num % 2 == 0) //then check if it is even { sum = sum num; //if it is, then add it to sum } } Console.WriteLine("The sum of the numbers is " sum);
Ответ №2:
Похоже, вы не поняли идею if
предложения -, позвольте мне объяснить это, используя следующие фрагменты кода:
Ваш код:
for (int i = 0; i lt; n; i ) { if (sum%2 == 0) { } else { } var num = int.Parse(Console.ReadLine()); sum = sum num; }
Это вычисляет сумму всех чисел (вы проверяете, четное число или нет, но вы не используете эту информацию).
Мое предложение: (вы проверяете, четное ли число, и используете эту информацию)
for (int i = 0; i lt; n; i ) { if (sum%2 == 0) { var num = int.Parse(Console.ReadLine()); sum = sum num; } else { } }
Еще один вопрос: как рассчитать сумму нечетных чисел? (Здесь вы проверяете, четное ли число, но используете случай, когда это не так)
for (int i = 0; i lt; n; i ) { if (sum%2 == 0) { } else { var num = int.Parse(Console.ReadLine()); sum = sum num; } }
Итак, вы видите? Вы можете использовать if
предложения -, чтобы отфильтровать то, что вы хотите сделать, когда условие выполнено или когда условие не выполнено, в этом вся идея.
Ответ №3:
Вам нужно проверить, делится ли переменная num на два, а не на сумму. Код, который у вас есть, проверяет, является ли сумма четной, и если да, то ничего не делает, так как вы ничего не добавили в оператор if. Вместо этого вы должны это делать if ( num % 2 == 0)
.
Вам также нужно переместить место, где объявлено число, в верхнюю часть цикла for, и переместить часть, где вы добавляете к сумме, внутрь условного (оператор if).