procedure TForm1.MakeTree(PF:string;NN:integer);
var Tree:PTree;
var i:byte;
function MakeBranch(var PF:string):PTree;
var t:PTree;
begin
if PF[length(PF)]='x'
then begin
new(t);
t^.Oper:=#0;
t^.Number:=StrToFloat(StringGrid1.Cells[0,NN-1]) ;
dec(NN);
delete(PF,length(PF),1);
t^.Right:=nil;
t^.Left:=nil;
end
else begin
new(t);
t^.Oper:=PF[length(PF)];
t^.Number:=0;
delete(PF,length(PF),1);
t^.Right:=MakeBranch(PF);
t^.Left:=MakeBranch(PF);
end;
MakeBranch:=t;
end;
function EvalTree(t:PTree):real;
begin
if t^.Oper=#0
then EvalTree:=t^.Number
else case t^.Oper of
'+':EvalTree:=EvalTree(t^.Left)+EvalTree(t^.Right);
'-':EvalTree:=EvalTree(t^.Left)-EvalTree(t^.Right);
'*':EvalTree:=EvalTree(t^.Left)*+EvalTree(t^.Right);
'/':EvalTree:=EvalTree(t^.Left)/EvalTree(t^.Right);
end;
end;
procedure DelTree(t:PTree);
begin
if t<>nil
then begin
DelTree(t^.Left);
DelTree(t^.Right);
dispose(t);
end;
end;
begin
i:=0;
Tree:=MakeBranch(PF);
Label5.Caption:=FloatToStr(EvalTree(Tree));
DelTree(Tree);
end;
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.