[Pascal] Prosty kalkulator ONP (RPN)

0

Mam zrobić kalkulator liczący dodawanie, odejmowanie, mnożenie i dzielenie wykorzystując ONP. Szukałem gotowych programów, ale nie znalazłem żadnego działającego w Pascalu, albo jest w C, albo nie działa, albo nie wykorzystuje ONP. Jak napisałem w innym temacie ( http://4programmers.net/Forum/583641?f=1#id583641 ) znalazłem niby kod do Pascala, ale nie kompiluje się.

Próbowałem robić na ifach algorytm tworzenia ONP, ale coś jest nie tak jak program znajduje ')' i ma wrzucić na wyjście to co było na stosie aż do znaku'('.

program Project4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var

a,w,s : string;
i,j : integer;

begin

Writeln('Wpisz dzialanie: ');
Readln(a);

for i:=1 to length(a) do begin
  if (40>ord(a[i])) or (ord(a[i])>47) and (ord(a[i])<>61) then
    w:=w+a[i]
      else
        begin
          if ord(a[i])=40 then
            s:=s+a[i]
              else if ord(a[i])=41 then
                for j:=length(s) downto 0 do begin
                  w:=w+s[j];
                  end;
                  w:=w+')';
          {else
            begin
              Writeln('Niepoprawne działanie');
              Readln;
            end;}
  end;
  end;

Writeln('Wyjscie: ',w,' ','Stos: ',s);
Readln;

end.

Pewnie to nie jest dobra metoda i nie wiem w końcu jak się za to złapać. Próbowałem też stworzyć stos, ale tego już w ogóle nie rozumiem... Proszę o pomoc i wskazówki.

0

Masz tu moją implementację w Delphi. Bezpośrednio nie uruchomi się to w zwykłym Pascalu bo jest to oparte na klasach. Po kilku przeróbkach powinno działać poprawnie.
Interpreter równań

0

I jak przerobić te klasy na Pascal?

I to jest ten algorytm z załącznika?

1 użytkowników online, w tym zalogowanych: 0, gości: 1