Решение: Среднее кратных восьми
Напишите программу, которая в последовательности натуральных чисел находит среднее арифметическое чисел, кратных 8, или сообщает, что таких чисел нет (выводит «NO»). Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 100. Введённые числа не превышают 300. Программа должна вывести среднее арифметическое чисел, кратных 8, или вывести «NO», если таких чисел нет. Значение выводить с точностью до десятых.
Решение по шагам
4 шагаСоздадим переменные для суммы чисел, кратных 8, и их количества.
$$summa = 0,\quad count = 0$$Будем считывать очередное число. При вводе 0 цикл завершается, поскольку 0 не входит в последовательность.
$$x = 0 \Rightarrow \text{конец ввода}$$Для каждого другого числа проверим делимость на 8 с помощью остатка от деления. Если остаток равен нулю, добавим число к сумме и увеличим счётчик.
$$x \bmod 8 = 0 \Rightarrow summa := summa + x,\quad count := count + 1$$Если подходящих чисел нет, счётчик равен нулю, поэтому выводим `NO`. Иначе вычисляем среднее арифметическое и выводим его с точностью до десятых.
$$\overline{x} = \dfrac{summa}{count}$$Программа на Python считывает числа до 0, суммирует числа, кратные 8, подсчитывает их количество и выводит среднее с одним знаком после десятичной точки либо `NO`.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Включают число 0 в последовательность.
Проверяют условие `x / 8 == 0` вместо проверки остатка `x % 8 == 0`.
Не обрабатывают случай отсутствия чисел, кратных 8.
Выводят среднее без округления до десятых.