@fixxxedme

Не получается получить все положительные числа из массива. Что не так?

нужно сложить положительные элементы массива
class Program {
        static void Count() {
            int[] num = { 5, -7, -1, 3, 9};
            for (int i = 1; i <= num.Length; i++) {
                int number = num[i];
                
                if (number > 0) {
                    int nm;
                    nm += number;
                    Console.WriteLine("Сумма всех положительных числе:" + nm);
                }
            }
        }

        static void Main() {
            Count();
            Console.ReadLine();
        }
    }
  • Вопрос задан
  • 705 просмотров
Решения вопроса 1
@kek123
Кроме того, как написали выше, что ты упускаешь нулевой элемент, ты так же поймаешь исключение IndexOutOfRange, потому что попытаешься обратиться к элементу массива с индексом 5, которого у тебя нет. Так же тебе нужно вынести int nm из цикла и инициализировать нулем, иначе каждую итерацию с положительным числом у тебя будет сбрасываться сумма.

Сonsole.WriteLine("Сумма всех положительных числе:" + nm); - это тоже стоит написать после цикла, а не внутри него, а то у тебя сейчас выводится каждое положительное число отдельно.

В итоге, это должно выглядеть вот так:

class Pragram
{
static void Count()
{
int[] num = { 5, -7, -1, 3, 9 };
int nm = 0;
for (int i = 0; i < num.Length; i++)
{
int number = num[i];
if (number > 0)
{
nm += number;
}
}
Console.WriteLine("Сумма всех положительных числе:" + nm);
}

static void Main()
{
Count();
Console.ReadLine();
}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Может уже пора на LINQ ?

int[] num = { 5, -7, -1, 3, 9};
Console.WriteLine("Сумма всех положительных чисел: {0}",  num.Where(i => i > 0).Sum());
Ответ написан
longclaps
@longclaps
Массив индексируется с нуля, нулевой элемент ты упускаешь.
Переменная nm объявляется внутри цикла, а надо бы вне его.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы