Var
i,sum,k:integer;
mas: array [1..10] of integer;
begin
randomize;
for i:=1 to 10 do begin
mas[i]:=random(-10,10);
write(mas[i], ' ');
end;
writeln(' ');
for i:=1 to 10 do begin
if mas[i] mod 3 = 0 then begin
k:=k+1;
sum:=sum+mas[i];
end
end;
writeln('Числа кратные 3 встречаются ',k,' раз. И их сумма = ',sum);
end.
Это так же называется обратной польской записью. Числа, которые встречаются интерпретатору, помещаются в стек. А операции совершаются над числами лежащими в вершине стека. Последовательность будет такая: а - помещается на вершину стека, b - помещается на вершину, а проталкивается вглубь стека. И т.д. После ввода цифры 7 стек будет иметь вид "abc7", где 7 лежит на вершине стека. Затем приходит черед арифметических операций: "+" - берутся два числа, лежащие в вершине стека, складываются, и вместо них на вершину стека ложится их сумма. Теперь стек будет таким: "ab(c+7)". Следующая операция "*" - берутся b и (с+7) и умножаются. Результат помещается на вершину стека. Стек: "а(b*(c+7))". И последнее действие "-" - из a вычитается b*(c+7). В результате выражение будет иметь вид:
а - b(c+7).