Я и не говорю,что стек с этим связан.
Вот у меня было задание
Цитата
Написать подпрограмму для вычисления значение выражения, представленного в обратной польской записи.
Я написал,а она меня послала куда подальше!
Код
function count_result (op1,op2:real;o:string):real;
var c:char;
r:real;
begin
if length(o)<>1 then t:=false;
c:=o[1];
t:=true;
case c of
'+':r:=op2+op1;
'-':r:=op2-op1;
'/':r:=op2/op1;
'*':r:=op2*op1;
else t:=false;
end;
count_result:=r;
end;
procedure calc;
var tek,oper1,oper2:pitem;{адрес текущей записи и ее операндов}
op1,op2:real;{операнды в числовом выражении}
op:set of char;
n:integer;
r:real;{результат операции}
c:char;
begin
tek:=first;
op:=['+','-','/','*'];
while (tek<>nil) do
begin
c:=tek^.info[1];
if (c in op) then
begin
oper1:=tek^.pred;
oper2:=oper1^.pred;
if (oper1=nil)or(oper2=nil) then
t:=false;
val(oper1^.info,op1,n);
if n<>0 then
t:=false;
val(oper2^.info,op2,n);
if n<>0 then
t:=false;
r:=count_result(op1,op2,tek^.info);
if t<>false then
begin
str(r:8:2,oper2^.info);
oper2^.next:=tek^.next;
dispose(oper1);
if oper1<>nil then
oper1^.pred:=oper2;
dispose(tek);
tek:=oper1;
end;
end
else tek:=tek^.next;
end;
if (first^.next<>nil) or (first^.pred<>nil) then
begin
writeln('выражение ошибочно');
end;
end;
Я искал ,но что-то ничего не нашел на этом форуме!(я правда не искал как "полиз")