program Vyhodnocovani_matematickych_vyrazu; uses crt; type spoj = ^element; element = record hodnota: char; dalsi: spoj; end; var zasobnik : spoj; vyraz : string; znak : char; i : integer; chyba, vklad : boolean; procedure Vytvor; begin zasobnik := nil; end; procedure Vloz(X: char); var pom: spoj; begin new(pom); with pom^ do begin hodnota := X; dalsi := zasobnik; end; zasobnik := pom; end; procedure Odeber(var X: char); var pom: spoj; begin if zasobnik = nil then begin write('Pozor - zasobnik je prazdny.'); chyba := true; Exit; end else begin X := zasobnik^.hodnota; pom := zasobnik; zasobnik := zasobnik^.dalsi; dispose(pom); end; end; function Jeprazdny: boolean; begin if zasobnik = nil then Jeprazdny := true else Jeprazdny := false; end; BEGIN clrscr; Vytvor; chyba := false; vklad := false; writeln('Tento program vyhodnocuje mat. vyrazy, zda jsou spravne uzavorkovany.'); writeln; write('Vloz matematicky vyraz : '); readln(vyraz); writeln; for i := 1 to length(vyraz) do begin if vyraz[i] = '(' then begin Vloz('('); vklad := true; end; if vyraz[i] = ')' then Odeber(znak); end; writeln; if not(vklad) then writeln('Matematicky vyraz nema zavorky.') else if (Jeprazdny and not(chyba)) then writeln('Matematicky vyraz je spravne uzavorkovan.') else writeln('Matematicky vyraz neni spravne uzavorkovan.'); writeln; writeln('Stiskni ENTER ...'); readln; END.