В этой публикации рассмотрим решение некоторых задач по теме "Циклический алгоритм".
Задача 1. С клавиатуры вводится N натуральных чисел. Найти количество чисел, оканчивающихся на 3.
Как будем решать задачу
Воспользуемся оператором цикла с счетчиком для ввода N чисел.
for k:=1 to N do
begin
readln(a);
end;
Чтобы узнать, оканчивается ли число на 3, воспользуемся операцией mod (целый остаток от деления).
Пусть число a=463.
Последнюю цифру вычислим так: a mod 10.
Действительно, 463 mod 10 равно 3.
Будем копить количество чисел (переменная p), оканчивающихся на 3, оператором:
if a mod 10 = 3 then p:=p+1;
Программа решения задачи на языке Паскаль
var k, N, p, a:integer;
begin
writeln('Введите количество чисел N ');
readln(N);
p:=0;
for k:=1 to N do
begin
writeln('Введите натуральное число ');
readln(a);
if a mod 10 = 3 then p:=p+1;
end;
writeln('Количество чисел, оканчивающихся на 3 равно ',p);
end.
Результат запуска программы
А что, если бы числа были не натуральные, а целые (как отрицательные, так и положительные), изменилось бы условие в операторе if?
Задача 2. С клавиатуры вводится N целых чисел. Найти среднее арифметическое двузначных чисел.
Как будем решать задачу
Воспользуемся оператором цикла с счетчиком для ввода N чисел.
for k:=1 to N do
begin
readln(a);
end;
Как узнать двузначное перед нами число или нет. Приведем примеры целых двузначных чисел: 23, -34, -99, 55.
Таким образом, минимальное двузначное положительное число это 10, а максимальное 99.
Минимальное отрицательное двузначное число это -99, а максимальное -10.
Значит для проверки условия, является ли число двузначным, можно воспользоваться условием:
(a>=10) and (a<=99) or (a>=-99) and (a<=-10)
то есть число отрицательное двузначное или положительное двузначное.
Ранее в этом блоге мы рассматривали способы проверки такого условия. Читайте статью "Как проверить, является ли число двузначным".
Если число a двузначное, то будем копить сумму s и количество p таких чисел (будем использовать операторные скобки для объединения этих двух действий).
Программа решения задачи на языке Паскаль
var k, N, p, a, s:integer; sr:real;
begin
writeln('Введите количество чисел N ');
readln(N);
p:=0; s:=0;
for k:=1 to N do
begin
writeln('Введите целое число ');
readln(a);
if (a>=10) and (a<=99) or (a>=-99) and (a<=-10) then
begin
p:=p+1;
s:=s+a;
end;
end;
sr:=s/p;
writeln('Среднее значение равно ',sr);
end.
Результат запуска программы
А что, если ни одного двузначного числа мы не введем, что выведет программа?