Создание программы, которая суммирует только четные числа, введенные с консоли

#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).