Задание №16 — Алгоритмы и программирование
Напишите программу, которая в последовательности натуральных чисел находит среднее арифметическое чисел, кратных 8, или сообщает, что таких чисел нет (выводит «NO»). Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 100. Введённые числа не превышают 300.
Программа должна вывести среднее арифметическое чисел, кратных 8, или вывести «NO», если таких чисел нет. Значение выводить с точностью до десятых.
Пример работы программы:
Входные данные | Выходные данные |
8 122 64 16 0 | 29.3 |
111 1 0 | NO |
Проверка решения с помощью ИИ доступна авторизованным пользователям
Решение.
Для решения этой задачи нам необходимо организовать цикл чтения чисел до тех пор, пока не будет введён ноль. В процессе чтения мы будем проверять каждое число на кратность 8. Если число подходит, мы добавим его к общей сумме и увеличим счётчик таких чисел.
Шаг 1: Инициализация переменных.
Нам понадобятся две переменные:
1. — для накопления суммы чисел, кратных 8.
2. — для подсчёта количества таких чисел.
Шаг 2: Организация ввода и цикла.
Будем считывать числа по одному. Используем цикл while, который будет работать, пока введённое число не равно 0. Внутри цикла проверяем условие: если остаток от деления числа на 8 равен 0 (), то прибавляем это число к и увеличиваем на 1.
Шаг 3: Проверка наличия подходящих чисел.
После завершения цикла (когда ввели 0) нужно проверить, нашли ли мы хотя бы одно число, кратное 8. Если , мы вычисляем среднее арифметическое по формуле: . Если же , выводим "NO".
Шаг 4: Вывод результата.
По условию задачи результат нужно вывести с точностью до десятых. В языке Python для этого можно использовать функцию round() или форматированную строку.
Пример реализации на языке Python:
sum_8 = 0
count_8 = 0
x = int(input())
while x != 0:
if x % 8 == 0:
sum_8 += x
count_8 += 1
x = int(input())
if count_8 > 0:
print(round(sum_8 / count_8, 1))
else:
print("NO")
Разбор примера из условия:
Ввод: 8, 122, 64, 16, 0.
1. 8 кратно 8. , .
2. 122 не кратно 8.
3. 64 кратно 8. , .
4. 16 кратно 8. , .
5. Ввод 0 — остановка.
Среднее арифметическое: . Округляем до десятых: .
Ответ: Программа считывает последовательность, суммирует числа, делящиеся на 8, и выводит их среднее арифметическое с точностью до десятых или NO.
Источник: ФИПИ