Program Intfix to Postfix dengan Pascal
Program ini adalah murni buatan saya, saya membuat program ini untuk memenuhu tugas yang diberikan oleh dosen yang mengajar mata kuliah Struktur Organisasi Data 2.
Berikut adalah tampilan dari program yang saya buat :
Berikut adalah tampilan dari program yang saya buat :
Berikut adalah source codenya:
uses crt;
var
intfix,sementara_out:string;
n,i,j,k,l,m,z:integer;
intfixstr,tumpukan:array[0..256] of string;
//var yang terpakai: intfix,i,j,k,l,z,m,intfixstr,tumpukan,n,sementara_out
//awal dari program
begin
//memasukkan notasi intfix
clrscr;
write ('Masukan notasi intfix = ');
readln(intfix);
//untuk memasukkan perkarakter intfix ke array tumpukan
for i:=1 to length(intfix) do intfixstr[i]:=copy(intfix,i,1);
//test
for z:=1 to length(intfix) do writeln(intfixstr[z]);
//untuk menandakan jumlah stack yang terisi
n:=0;
//memulai proses intfix ke postfix
for i:=0 to length(intfix) do
begin
if n=0 then
begin
case intfixstr[i] of
'+':
begin
tumpukan[n]:=intfixstr[i];
n:=n+1;
end;
'-':
begin
tumpukan[n]:=intfixstr[i]; n:=n+1;
end;
'*':
begin
tumpukan[n]:=intfixstr[i]; n:=n+1;
end;
'/':
begin
tumpukan[n]:=intfixstr[i]; n:=n+1;
end;
'^':
begin
tumpukan[n]:=intfixstr[i]; n:=n+1;
end;
'(':
begin
tumpukan[n]:=intfixstr[i]; n:=n+1;
end;
';':
begin
writeln('tidak ada postfix yang dihasilkan');
end;
else
sementara_out:=sementara_out+intfixstr[i];
end;
end
else
begin
//isi else
case intfixstr[i] of
'(':
begin
tumpukan[n]:=intfixstr[i];
n:=n+1;
end;
'+':
begin
case tumpukan[n-1] of
'+':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='+';
end;
'-':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='+';
end;
'*':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='+';
end;
'/':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='+';
end;
'^':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='+';
end;
'(':
begin
tumpukan[n]:='+';
n:=n+1;
end;
end;
end;
'-':
begin
case tumpukan[n-1] of
'+':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='-';
end;
'-':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='-';
end;
'*':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='-';
end;
'/':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='-';
end;
'^':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='-';
end;
'(':
begin
tumpukan[n]:='-';
n:=n+1;
end;
end;
end;
'*':
begin
case tumpukan[n-1] of
'+':
begin
tumpukan[n]:='*';
n:=n+1;
end;
'-':
begin
tumpukan[n]:='*';
n:=n+1;
end;
'*':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='*';
end;
'/':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='*';
end;
'^':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='*';
end;
'(':
begin
tumpukan[n]:='*';
n:=n+1;
end;
end;
end;
'/':
begin
case tumpukan[n-1] of
'+':
begin
tumpukan[n]:='/';
n:=n+1;
end;
'-':
begin
tumpukan[n]:='/';
n:=n+1;
end;
'*':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='/';
end;
'/':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='/';
end;
'^':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='/';
end;
'(':
begin
tumpukan[n]:='/';
n:=n+1;
end;
end;
end;
'^':
begin
case tumpukan[n-1] of
'+':
begin
tumpukan[n]:='^';
n:=n+1;
end;
'-':
begin
tumpukan[n]:='^';
n:=n+1;
end;
'*':
begin
tumpukan[n]:='^';
n:=n+1;
end;
'/':
begin
tumpukan[n]:='^';
n:=n+1;
end;
'(':
begin
tumpukan[n]:='^';
n:=n+1;
end;
'^':
begin
sementara_out:=sementara_out+tumpukan[n-1];
tumpukan[n-1]:='^';
end;
end;
end;
')':
begin
//belum jadi, pusing, m belum kepake
j:=n;
for k:=n downto 0 do
begin
if (tumpukan[k]='(') then
begin
tumpukan[k]:='';
n:=k;
end
else
begin
sementara_out:=sementara_out+tumpukan[k];
tumpukan[k]:='';
n:=k;
end;
end;
end;
';':
begin
while n>=0 do
begin
sementara_out:=sementara_out+tumpukan[n];
n:=n-1;
end;
end;
else
sementara_out:=sementara_out+intfixstr[i]
end;
//end isi else
end;
end;
//output postfix di cetak
writeln('hasilnya adalah = ',sementara_out);
//akhir program
end.
Semoga artikel ini dapat berguna sebagai media pembelajaran kedepannya. Sekian!
Comments
Post a Comment
If you have question, comment on comment section below