program stack_by_Ardian_dkk; uses crt; type list = array[1..50] of char; list2 = array[1..50] of integer; var form : string; j,i, x : integer; stack : list; pri: list2; opr: set of char; kr: char; begin clrscr; j := 0; opr:=['^']+['/']+['*']+['+']+['-']; writeln('Program konversi infix to postfix'); write('Notasi Infix : '); readln(form); write('Notasi Postfix : '); for i := 1 to length(form) do begin kr := form[i]; if(kr = '(') then begin j:=j+1; stack[j] := kr; pri[j]:=1; end else if(kr = ')') then begin while (stack[j] <> '(') do begin write(stack[j]); j:=j-1; end; if (stack[j]='(') then j:=j-1; end else if(kr in opr) then begin j:=j+1; case kr of '^' : pri[j] := 4; '*','/' : pri[j] := 3; '+','-' : pri[j] := 2; end; while (pri[j] <= pri[j-1]) do begin write(stack[j-1]); pri[j-1] := pri[j]; j:=j-1; end; stack[j]:=kr; end else if(kr = ';') then begin for x:=j downto 1 do begin write(stack[x]); j:=j-1; end end else if(kr <> ' ') then write(kr); end; for x:=j downto 1 do write(stack[x]); readln; end.