Вывести на экран произведение двузначных элементов последовательности натуральных чисел, которые делятся на заданное число

Формулировка. Дано натуральное число 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. var
  3. a, n, prod: word;
  4. begin
  5. readln(n);
  6. read(a);
  7. prod := 1;
  8. while a <> 0 do begin
  9. if (a > 9) and (a < 100) and (a mod n = 0) then prod := prod * a;
  10. read(a)
  11. end;
  12. if prod <> 1 then writeln(prod) else writeln(‘No such elements!’)
  13. end.