Шешімі: Среднее кратных тоғыз
Напишите программу, которая в последовательности целых чисел находит среднее арифметическое чисел, кратных 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, нет.
Используют целочисленное деление вместо обычного деления.