Добрий вечір.
Потрібна допомога у обчисленні створеного Зворотнього Польського Запису. Сам алгоритм обчислення я розумію, але я не можу його представити у програмному вигляді.
На даний момент є лише код програми яка створює запис.
▼Код
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    XPManifest1: TXPManifest;
    procedure Button1Click(Sender: TObject);
    procedure Push(Sumb:char);
    procedure Pop(var Sumb:char);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  Stack = ^Element;
  Element = record
    Op:Char;
    Next:stack;
  end;
var
  Form1: TForm1;
  Head:Stack;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i:Byte; l:real; sm:Char;
begin
  Edit2.Text:='';
  New(Head); Head^.Next := nil;
  i := 1;
  while i <= Length(Edit1.Text) do
  begin
    case Edit1.Text[i] of
      '(': push('(');
      ')': begin
             Pop(sm);
             while sm <> '(' do
             begin
               Edit2.Text := Edit2.Text + sm;
               Pop(sm);
             end;
           end;
      '+','-': begin
                 if (Head.Op = '+') or (Head.Op = '-') then
                 begin
                   Pop(sm);
                   Edit2.Text := Edit2.Text + sm;
                 end;
                 Push(Edit1.Text[i]);
               end;
      '*','/': begin
                 if (Head.Oper = '*')or(Head.Oper = '/')then
                 begin
                   Pop(sm);
                   Edit2.Text := Edit2.Text + sm;
                 end;
                 push(Edit1.text[i]);
               end;
    else
      Edit2.Text := Edit2.Text + Edit1.Text[i];
    end;
    inc(i);
  end;
  while head^.next <> nil do
  begin
    Pop(sm);
    Edit2.Text := Edit2.Text+sm;
  end;
end;
procedure TForm1.Pop(var Sumb: char);
begin
  Sumb := Head^.Oper;
  Head := Head^.next;
end;
procedure TForm1.Push(sumb: char);
var Elem:Stack;
begin
  New(Elem);
  Elem^.Oper := Sumb;
  Elem^.Next := Head;
  head:=Elem;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;
end.
Проблема полягає саме в тому, що я не знаю як стрічку перетворити таким чином, щоб можна було виконувати арифметичні операції.
P.S. Вираз задається у вигляді запису чисел, наприклад: (6+8)/(15-8)