Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal»
51
9.
while a <> 0 do begin
10.
if a mod 2 = 0 then prod := prod * a;
11.
read(a)
12.
end;
13.
if prod <> 1 then writeln(prod) else writeln('
No such ele-
ments!')
14.
end.
Задача № 41. Вывести на экран произведение двузначных элементов последова-
тельности натуральных чисел, которые делятся на заданное число
Формулировка. Дано натуральное число n, а затем последовательность натуральных чисел,
ограниченная вводом нуля. Вывести на экран произведение двузначных элементов этой последова-
тельности, которые делятся на n.
Решение. Задача очень похожа на предыдущую, только в этот раз нам необходимо проверять
делимость не на 2 (это было условие четности), а на n. К тому же, мы должны рассматривать только
двузначные члены. Для выявления двузначного числа мы, однако, не будем считать его разрядность
и сравнивать ее с двойкой, а воспользуемся тем, что любое двузначное число больше 9 и меньше
100.
В связи с этим условие поиска члена последовательности, отвечающего заданным критериям,
будет выглядеть так: (a > 9) and (a < 100) and (a mod n = 0).
Напомним, что and – это конъюнкция, причем наше выражение содержит три конъюнктивных
члена, так как операция применяется дважды. Оно истинно тогда и только тогда, когда истинны все
три члена, и ложно во всех остальных случаях. При этом конъюнктивные члены стоят в скобках,
так как логические операции в языке Pascal имеют больший приоритет, чем операции сравнения и
арифметические операции. То есть, если опустить скобки, то Pascal, вычисляя значение слева
направо, выполнит сначала операции 9 and a, 100 and a и т. д., что в корне неправильно.
Код:
1.
program ProductOfReqNums;
2.
3.
var
4.
a, n, prod: word;
5.
6.
begin
7.
readln(n);
8.
read(a);
9.
prod := 1;
10.
while a <> 0 do begin
11.
if (a > 0) and (a < 100) and (a mod n = 0) then prod :=
prod * a;
12.
read(a)
13.
end;
14.
if prod <> 1 then writeln(prod) else writeln('
No such ele-
ments!')
15.
end.
Do'stlaringiz bilan baham: |