Решение: Среднее кратных девяти
Напишите программу, которая в последовательности целых чисел находит среднее арифметическое чисел, кратных 9, или сообщает, что таких чисел нет. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не является членом последовательности).
Количество чисел не превышает 100. Введённые числа по модулю не превышают 300.
Программа должна вывести среднее арифметическое чисел, кратных 9, или вывести NO, если таких чисел в последовательности нет.
| Входные данные | Выходные данные |
|---|---|
| 9 −30 18 0 | 13.5 |
| −15 7 0 | NO |
Решение по шагам
5 шаговСчитываем очередное число. Если оно равно 0, завершаем ввод, так как 0 не входит в последовательность.
$$x = 0 \Rightarrow \text{конец ввода}$$Для каждого ненулевого числа проверяем делимость на 9 с помощью остатка от деления. Если остаток равен нулю, добавляем число к сумме и увеличиваем счётчик.
$$x \bmod 9 = 0$$После завершения ввода проверяем счётчик. Если подходящие числа найдены, среднее арифметическое равно отношению суммы к их количеству.
$$\overline{x} = \dfrac{\mathrm{sum}}{\mathrm{count}}$$Если подходящих чисел нет, выводим NO.
$$\mathrm{count} = 0 \Rightarrow \mathrm{NO}$$Один из вариантов программы на Python:
s = 0
count = 0
while True:
x = int(input())
if x == 0:
break
if x % 9 == 0:
s += x
count += 1
if count == 0:
print('NO')
else:
print(s / count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Включают завершающий 0 в расчёт среднего.
Проверяют, делится ли на 9 количество введённых чисел, вместо проверки каждого числа.
Выводят 0 или вызывают деление на ноль, если чисел, кратных 9, нет.
Используют целочисленное деление вместо обычного деления.