Это так же называется обратной польской записью. Числа, которые встречаются интерпретатору, помещаются в стек. А операции совершаются над числами лежащими в вершине стека. Последовательность будет такая: а - помещается на вершину стека, b - помещается на вершину, а проталкивается вглубь стека. И т.д. После ввода цифры 7 стек будет иметь вид "abc7", где 7 лежит на вершине стека. Затем приходит черед арифметических операций: "+" - берутся два числа, лежащие в вершине стека, складываются, и вместо них на вершину стека ложится их сумма. Теперь стек будет таким: "ab(c+7)". Следующая операция "*" - берутся b и (с+7) и умножаются. Результат помещается на вершину стека. Стек: "а(b*(c+7))". И последнее действие "-" - из a вычитается b*(c+7). В результате выражение будет иметь вид: а - b(c+7).
Program z3; Var y: array [1..15] of real; g: array [1..20] of real; i,d, a,b: integer; sum, sum_2: real;Begin writeln('Введите оплату труда за день'); read(d); a:= 0; b:= 0; for i := 1 to 15 do begin y[i] := random (30); if (y[i] < 10) then a:= a + 1; y[i] := y[i] * d * 0.8; end; for i:=1 to 20 do g[i] := random (30); if (g[i] < 10) then b:= b + 1; g[i] := g[i] * d * 0.8; for i:=1 to 15 do begin writeln('Сотрудник y_',i,' - ',y[i]); sum:= sum + y[i]; end; writeln; writeln('Сумма отдела y - ', sum); writeln; for i:=1 to 20 do begin writeln('Сотрудник g_',i,' - ',g[i]); sum_2:= sum_2 + g[i]; end; writeln; writeln('Сумма отдела g - ', sum_2); writeln; writeln('В отделе y ', a, ' сотрудников работало меньше 10 дней'); writeln; writeln('В отделе g ', b, ' сотрудников работало меньше 10 дней'); End.
а - b(c+7).