Jumat, 11 Maret 2011

Program untuk merubah notasi infix menjadi postfix

program infix_to_postfix;
uses crt;

const max_elemen = 255;

type s255 = string [max_elemen];
tumpukan = record
rinci : s255;
atas : 0..max_elemen
end;

var infix : s255;
lagi : char;

function valensi (tanda_op : char) : integer;
begin
case tanda_op of
'^' : valensi := 3;
'*', '/' : valensi := 2;
'+', '-' : valensi := 1;
'(' : valensi := 0
end
end;

procedure push (var t : tumpukan; elemen : char);
begin
t.atas := t.atas +1;
t.rinci[t.atas] := elemen
end;

function pop (var t : tumpukan) : char;
begin
pop := t.rinci[t.atas];
t.atas := t.atas - 1
end;

procedure konversi_cetak (infix : s255);
var i : integer;
operator : set of char;
temp, kar : char;
t : tumpukan;
test : boolean;
begin
operator := ['^']+['*']+['/']+['+']+['-'];
for i := 1 to length (infix) do
begin
kar := infix[i];
if kar = '(' then push (t, kar)
else if kar = ')' then
begin
while t.rinci[t.atas] <> '(' do
write (pop(t) : 2);
temp := pop(t)
end
else if kar in operator then
begin
while (t.atas <> 0 ) and (valensi(kar)
<= valensi (t.rinci[t.atas])) do write (pop(t) : 2); push (t, kar) end else if kar <> ' ' then
write (kar : 2)
end;

if t.atas <> 0 then
repeat
write (pop(t):2)
until t.atas = 0
end;

begin
clrscr;
writeln ('Mengubah Notasi Infix Menjadi Postfix dengan struktur tumpukkan');
writeln ('--------------------------------------------------------------------');
writeln ;
repeat
write ('Input ungkapan Infix : ');
readln (infix); writeln;
write ('Ungkapan Postfix : ');
konversi_cetak (infix);
writeln; writeln;
write ('Try Again ? y(a) / t(idak) : ');
readln (lagi);
writeln
until not (lagi in ['Y', 'y'])
end.

Selasa, 01 Maret 2011

Program String menggunakan Pascal for windows versi 1.5

uses
wincrt;
const
spasi=' ';
var
r,kata,kata1,kata2,kata3:string;
menu,posisi:integer;
begin
writeln('---Pilihan---');
writeln('1.Length');
writeln('2.Concat');
writeln('3.Insert');
write('masukan angka pilihan anda: ');readln(menu);
case menu of
1:begin
clrscr;
write('Silahkan masukkan string yg ingin di ketahui panjang karakternya : ');readln(kata1);
write('"',kata1,'"',' memiliki panjang string sebanyak : ',length(kata1),'karakter')
end;
2:begin
writeln('Silahkan masukkan 2 kata yang ingin di gabungkan : ');
clrscr;
write('kata pertama adalah : ');readln(kata1);
write('kata kedua adalah : ');readln(kata2);
write('2 kata yang telah anda gabungkan adalah : ',concat(kata1,kata2));
end;
3:begin
clrscr;
writeln('Silahkan masukkan kata(diikuti dengan letak)yg ingin disisipkan di kata pertama yg akan anda input : ');
write('Kata pertama : ');readln(kata1);
write('Kata kedua( yg ingin anda sisipkan pada kata pertama) : ');readln(kata2);
write('tentukan posisi dimana anda ingin menyisipkan kata kedua ke dalam kata pertama : ');readln(posisi);
Insert(kata2,kata1,posisi);
writeln(kata1);
end;
end;
end.