Задание №20.2 ОГЭ.Запись алгоритма на языке программирования
Второй вариант задания №20 ОГЭ по информатике и ИКТ, относящегося к высокому уровню сложности, предусматривает разработку и запись алгоритма на языке программирования.
Рассмотрим типовые задания тренировочных работ и разберем способы их решения.
Задание №20.2. Напишите программу, которая в последовательности натуральных чисел находит среднее арифметическое двухзначных чисел или сообщает, что таких чисел нет.
Программа получает на вход натуральные числа, количество введенных чисел неизвестно, последовательность заканчивается числом 0 (0 – признак окончания ввода, не является членом последовательности).
Количество чисел не превышает 100. Введенные числа не превышают 300. Программа должна вывести среднее арифметическое двухзначных чисел или вывести NO, если таких чисел в последовательности нет.
Решение.
1. Два предложения в последнем абзаце «Количество чисел не превышает 100. Введенные числа не превышают 300» указывают на два факта:
- максимальное возможное количество двухзначных чисел в последовательности не превышает 100;
- максимальная возможная сумма двухзначных чисел в последовательности не превышает 9900.
Т. к. числа в последовательности натуральные, то с учетом выше перечисленных замечаний выберем для переменных тип данных integer.
Для решения поставленной задачи определим количество чисел в последовательности, удовлетворяющих условию двузначности, и найдем их сумму. Количество будем накапливать в переменной count, а сумму — в переменной s. Текущий член последовательности, вводимый с клавиатуры, будем хранить в переменной num.
Поскольку «количество введенных чисел неизвестно», то в программе будем использовать цикл с предусловием while, работа которого прекращается, если введенный член последовательности будет равен 0.
Вывод результатов работы программы осуществим с помощью условного оператора if.
Приведем текст программы на языке программирования Паскаль
- var
- s, num, count: integer;
- begin
- s := 0;
- readln(num);
- count := 1;
- while (num <> 0) do
- begin
- if (n > 9) and (n < 100) then
- begin
- s += num;
- Inc(count);
- end;
- readln(num);
- end;
- if s = 0 then
- writeln('NO')
- else
- writeln(s/(count - 1));
- end.