Как умножить все элементы массива?

Вопрос: Я начинаю изучать С# и пишу программу, которая сначала попросит пользователя ввести список чисел. Когда пользователь закончит ввод ввода, я хотел бы скомпоновать каждый номер, предоставленный пользователем во входном файле. Пример пользовательского ввода - 2 3 5. Вот код: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Program { class Third

Вопрос:

Я начинаю изучать С# и пишу программу, которая сначала попросит пользователя ввести список чисел. Когда пользователь закончит ввод ввода, я хотел бы скомпоновать каждый номер, предоставленный пользователем во входном файле. Пример пользовательского ввода – 2 3 5.

Вот код:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Program { class Third { public static void Main() { Console.WriteLine(«Enter how much numbers»); int howMuch = int.Parse(Console.ReadLine()); int[] num = new int[howMuch]; int sum = 0; for (int i = 0; i < num.Length; i++ ) { sum = num[i] * num[i]; // this is what i did but it does not work? } Console.WriteLine(sum); Console.ReadLine(); } } }

В частности, я бы сначала хотел, чтобы пользовательский ввод был захвачен в массиве numbers. И тогда я хотел бы скомпоновать каждое число в массиве num который был создан. Что случилось с моей программой?

Лучший ответ:

Это может быть МАЛЕНЬКОЙ лучше, хотя до сих пор все еще нужно немного потрудиться!

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Program { class Third { public static void Main() { Console.WriteLine(«Enter how many numbers»); int howMuch = int.Parse(Console.ReadLine()); int[] num = new int[howMuch]; int sum = 1; for(int i=0;i<num.Length;i++) //allows you to fill the array { Console.WriteLine(«Please enter an integer»); sum *= int.Parse(Console.ReadLine()); // this will now multiply the value to sum, as your comment suggests } Console.WriteLine(sum); Console.ReadLine(); } } }

РЕДАКТИРОВАТЬ

sum *= num[i];

должен делать то, что вы хотите!

Ответ №1

Во-первых, вам нужно получить данные от пользователя и заполнить массив:

for (int i = 0; i < num.Length; i++) { //TODO: Look into int.TryParse method to validate user input num[i] = int.Parse(Console.ReadLine()); }

Вместо того, чтобы переписывать sum используйте sum += num[i] * num[i] во втором цикле. Или, если вы ищете умножение всех чисел, просто используйте sum = sum * num[i]; и начать сумму с 1.

Ответ №2

Ваш код не инициализирует массив – я добавил

Console.WriteLine(«Enter number » + (i + 1)); num[i] = int.Parse(Console.ReadLine());

для этого.

Также исправлено суммирование: sum +=…

for (int i = 0; i < num.Length; i++ ) { Console.WriteLine(«Enter number » + (i + 1)); num[i] = int.Parse(Console.ReadLine()); sum += (num[i] * num[i]); } Ответ №3

Взгляните на математику, которую вы делаете в цикле.

sum = num[i] * num[i];

Каждый раз с помощью вы устанавливаете сумму, равную квадрату проиндексированного целого числа.

Взяв ваш пример из 2, 3, 5, первый раз через цикл, вы установите значение sum = 2 * 2 (или 4), во второй раз вы установите сумму = 3 * 3 (или 9), а в последний раз это будет сумма = 5 * 5 (или 25). То, что вы действительно хотите, это 2 * 3 * 5, правильно?

Все, что вам нужно сделать, это инициализировать int sum = 1 и изменить оператор в вашем цикле:

sum = sum * num[i];

Это приведет к получению sum = 1 * 2 в первый раз через, sum = 2 * 3 во второй раз и sum = 4 * 5 в третий раз.

Ответ №4

Я предположил, что сумма, которую вы хотите сделать (если вход 2,3,5), составляет 2 * 3 * 5. Если это так, то присвоение вашей переменной sum немного вводит в заблуждение, так как это будет означать 2 + 3 + 5.

Цикл for котором вы умножаете числа, имел строку

sum = num[i]*num[i];

Который, следуя примеру, когда я == 0, будет делать sum = 2*2, а затем перезаписывать его, когда вы увеличиваете цикл, поэтому sum заканчивается на 25 (5 * 5) и скидка на все остальные значения.

Если вы хотите суммировать квадраты чисел, инициализируя sum до 0, а затем используя строку

sum += num[i] * num[i];

должно сработать. Сказав, что, если вы специально не нужно хранить его для какой – либо причины, обрабатывая значения, когда они читали бы лучше, так как программа будет иметь 1 меньше for цикла.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Program { class Third { public static void Main() { Console.WriteLine(«Enter how much numbers»); int howMuch = int.Parse(Console.ReadLine()); int[] num = new int[howMuch]; for(int i = 0; i < howMuch; ++i) { //This is assuming that the user will enter an int value. //Ideally, verify this using int.TryParse or something similar. num[i] = int.Parse(Console.ReadLine()); } int sum = 1; //Set to 1 so that the PRODUCT is not always zero for (int i = 0; i < num.Length; i++ ) { sum *= num[i]; //Multiply the value } Console.WriteLine(sum); Console.ReadLine(); } }

Если ввод равен 2, 3, 5, значение в сумме будет 30

Ответ №5

замените код в Main() следующим образом:

Console.WriteLine(«Enter how much numbers»); int howMuch = int.Parse(Console.ReadLine()); int[] num = new int[howMuch]; Console.WriteLine(«Enter numbers»); int sum = 0; for (int i = 0; i < num.Length; i++ ) { num[i] = int.Parse(Console.ReadLine()); sum += num[i] * num[i]; // this is what i did but it does not work? } Console.WriteLine(sum); Console.ReadLine();

Оцените статью
Добавить комментарий