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