В то время как цикл, сумма пятого, десятого, пятнадцатого ... и т. Д. Число - PullRequest
0 голосов
/ 26 сентября 2018

Пример того, что необходимо сделать:

Example of what needs to be done

"Введено несколько чисел (ввод снова заканчивается на 0). Определите и напечатайте сумму 5-го, 10-го15-й номер и т. Д. »

Может кто-нибудь сказать, что не так с моим кодом?

class Program
{
    static void Main(string[] args)
    {
        int counter = 0;
        int sum = 0;

        Console.Write("Enter a number: ");
        int number = int.Parse(Console.ReadLine());

        while (number != 0)
        {
            if (number > 0 && counter % 5 == 0)
            {
                counter++;
                sum = sum + number;
            }
            Console.Write("Enter a number: ");
            number = int.Parse(Console.ReadLine());
        }

        Console.WriteLine("Sum of the 5th, 10th, 15th ... number is = {0}", sum);
        Console.ReadKey();
    }
}

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Вы должны увеличить счетчик до того, как получите

Counter++
If (counter % 5 == 0) { 
...
0 голосов
/ 26 сентября 2018

Проблема: вы увеличиваете counter, только если % 5 == 0, но оно никогда не достигает этого значения.Как вы можете видеть, ваше начальное значение:

int counter = 0;

Итак, вторая часть условия if будет иметь значение false на первой и всех последующих итерациях, потому что переменная никогда не получит шанс измениться.,Он остается на 0 во всех итерациях

Решение: поместите инкрементную строку за пределы предложения if.Таким образом, вы фактически подсчитываете количество входных чисел и, таким образом, можете определить, является ли это 5-м, 10-м, 15-м ...

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

number = int.Parse(Console.ReadLine());

в качестве первой строки в цикле while.Затем вы можете подсчитать, и после этого вы должны оценить, является ли это число 5-м, 10-м, 15-м ... элементом:

while (number != 0)
{
    Console.Write("Enter a number: ");
    number = int.Parse(Console.ReadLine());
    counter++;

    if (number > 0 && counter % 5 == 0)
    {
        sum = sum + number;
    }
}

РЕДАКТИРОВАТЬ: Вдохновленный комментарием PaulF :

Я бы предположил, что счетчик должен увеличиваться только если (число> 0).

Чтобы быть точным в деталях ваших требований, вам нужно будет сделать дополнительное условие if для проверки этого случая.Но поскольку 0 является нейтральным элементом в добавлении, это не имеет значения для вычисленной суммы.Таким образом, код должен по-прежнему давать желаемый результат

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

Если вы также хотели запретить использование отрицательных чисел, то вам следует разделить условие if на два и увеличить счетчик, только есливведенный номер больше 0.После этого вы можете проверить, является ли текущий элемент кандидатом на добавление к сумме:

while (number != 0)
{
    Console.Write("Enter a number: ");
    number = int.Parse(Console.ReadLine());

    if (number > 0 )
    {
        counter++;
        if (counter % 5 == 0)
        {
            sum = sum + number;
        }
    }
    else
    {
        Console.Write("Please no negative numbers!");
    }
}
...