Сегодня разберём нестандартные задачи из задания 20.2 (вторая часть) ОГЭ по информатике.
Определение КОЛИЧЕСТВО элементов, КРАТНЫХ 6 и ОКАНЧИВАЮЩИХСЯ на 2.
Задача 1
Напишите программу, которая в последовательности натуральных чисел определяет КОЛИЧЕСТВО всех чисел, КРАТНЫХ 6 и ОКАНЧИВАЮЩИХСЯ на 2. В последовательности всегда имеется число, кратное 6 и оканчивающееся на 2. Программа получает на вход натуральные числа, КОЛИЧЕСТВО ВВЕДЁННЫХ ЧИСЕЛ НЕИЗВЕСТНО, ПОСЛЕДОВАТЕЛЬНОСТЬ ЧИСЕЛ ОКАНЧИВАЕТСЯ ЧИСЛОМ 0. (0 – признак окончания последовательности, не входит в последовательность)
Количество чисел не превышает 1000. Введённые числа не
превышают
30 000.
Программа должна вывести одно число - КОЛИЧЕСТВО всех чисел, КРАТНЫХ 6 и ОКАНЧИВАЮЩИХСЯ на 2.
Решение:
Заводим две переменные: а – переменная для чисел, quantity – переменная для результата. Вначале Количество равно нулю, а само число -1 (главное, чтобы не (кратное 6 и оканчивающие на 2)) Далее, используем ЦИКЛ с предусловием (WHILE). Запрашиваем число, если оно кратно 6 (остаток от деления на 6 равен 0) И это число оканчивается на 2 (остаток от деления на 10 равно 2), то плюсуем 1 к тому, что было в переменной Количество. Как только, мы получили в последовательности 0 – программа выходит из ЦИКЛА (WHILE), и распечатывает ответ.
var a, quantity: integer;
begin
quantity:=0;
a:=-1;
while a <> 0 do
begin
Readln(a);
if (a mod 6 = 0) and (a mod 10 = 2)
then quantity := quantity + 1;
end;
Writeln(quantity);
End.
Найти сумму элементов, КРАТНЫХ 10 и БОЛЬШИХ 100.
Задача 2
Напишите программу, которая в последовательности натуральных чисел определяет СУММУ всех чисел, КРАТНЫХ 10 и БОЛЬШИХ 100. В последовательности всегда имеется число, кратное 10 и большее 100. Программа получает на вход натуральные числа, КОЛИЧЕСТВО ВВЕДЁННЫХ ЧИСЕЛ НЕИЗВЕСТНО, ПОСЛЕДОВАТЕЛЬНОСТЬ ЧИСЕЛ ОКАНЧИВАЕТСЯ ЧИСЛОМ 0. (0 – признак окончания последовательности, не входит в последовательность)
Количество чисел не превышает 1000. Введённые числа не
превышают
30 000.
Программа должна вывести одно число - СУММУ всех чисел, кратных 10 и БОЛЬШИХ 100.
Решение:
Заводим две переменные: а – переменная для чисел, sum – переменная для суммы. Вначале сумма равна нулю, а само число -1 (главное, чтобы не (КРАТНОЕ 10 и БОЛЬШЕЕ 100)). Далее, используем ЦИКЛ с предусловием (WHILE). Запрашиваем число, если оно кратно 10 (остаток от деления на 10 равен 0) И это число БОЛЬШЕ 100 (>100), то СУММИРУЕМ: к тому, что было, в переменной суммы, плюсуем наш элемент. Как только мы получили в последовательности 0 – программа выходит из ЦИКЛА (WHILE) и распечатывает ответ.
Var a, sum: integer;
Begin
sum:=0;
a:=-1;
while a <> 0 do
begin
Readln(a);
if (a mod 10 = 0) and (a>100)
then sum := sum + a;
end;
Writeln(sum);
End.
Нахождение минимального нечётного числа, большего 50.
Задача 3
Напишите программу, которая в последовательности натуральных чисел определяет МИНИМАЛЬНОЕ нечётное число БОЛЬШЕЕ 50. В последовательности всегда имеется нечётное число большее 50. Программа получает на вход натуральные числа, КОЛИЧЕСТВО ВВЕДЁННЫХ ЧИСЕЛ НЕИЗВЕСТНО, ПОСЛЕДОВАТЕЛЬНОСТЬ ЧИСЕЛ ОКАНЧИВАЕТСЯ ЧИСЛОМ 0. (0 – признак окончания последовательности, не входит в последовательность)
Количество чисел не превышает 1000. Введённые числа не
превышают
30 000.
Программа должна вывести одно число - МИНИМАЛЬНОЕ нечётное число БОЛЬШЕЕ 50.
Решение:
Заводим две переменные: а – переменная для чисел, min – переменная для результата. Вначале минимальное число равно самому большому значению из всех возможных: 30000, а само число -1 (главное, чтобы не (нечётное число БОЛЬШЕЕ 50)). Далее, используем ЦИКЛ с предусловием (WHILE). Запрашиваем число, если оно нечётное (остаток от деления на 2 равен 1) И число больше 50 (>50), И это число меньше, чем переменная min (минимальное число, считающееся в данный момент), то это число заносится в переменную min (Т.е. «получаем нового победителя – обновляем минимальное число»).Как только мы получили в последовательности 0 – программа выходит из ЦИКЛА (WHILE), и распечатывает ответ.
Var a, min: integer;
Begin
min:=30000;
a:=-1;
while a <> 0 do
begin
Readln(a);
if (a mod 2 = 1) and (a>50)
and (a < min) then min := a;
end;
Writeln(min);
End.
Успехов на экзамене по информатике!
Оставить коментарий: