Rabu, 16 Maret 2011

mengubah infix ke postfix

Mengubah infix ke postfix
program ini menggunakan pascal

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 ke Postfix');
writeln ('Dengan Memanfaatkan Struktur Tumpukan');
writeln ('-------------------------------------');
writeln ;
repeat
write ('Masukkan Ungkapan Infix : ');
readln (infix); writeln;
write ('Ungkapan Postfix : ');
konversi_cetak (infix);
writeln; writeln;
write ('Akan Mencoba Lagi ? y(a) / t(idak) : ');
readln (lagi);
writeln
until not (lagi in ['Y', 'y'])
end.

Rabu, 02 Maret 2011

sod2 (program pascal)

Struktur dan organisasi data 2
pada program ini saya menggunakan turbo pascal 7.0

uses crt;
label1;
var q: integer;
i :integer;
jawab:char;
a,b,c,d:string;
begin
repeat
clrscr;
writeln('-------menu-------');
writeln('1.concat :');
writeln('2.insert :');
writeln('3.length :');
writeln('==============');
writeln('masukan pilihan anda=');
readln(q)
case q of
1:
begin
write('kata1 :'); readln (a);
write('kata2 :'); readln (b);
write('kata3 :'); readln (c);
d:=concat(a,b,c);
writeln(d);
end;
2:
begin
write('kata1 :'); readln (a);
write('kata2 :'); readln (b);
write('kata3 :'); readln (c);
d:=concat(a,b,c);
insert('&',d,7);
writeln(d);readln(d);
end;
3:
begin
write('kata1 :'); readln (a);
write('kata2 :'); readln (b);
write('kata3 :'); readln (c);
d:=concat(a,b,c);
I:=length(d);
writeln('panjang string d:',I); readln;
end;
end;
write('apakah anda ingin mengulanginya? (y/t):');
readln(jawab);
until(jawab='t');
end.

outputnya adalah
----------menu----------
1.concat :
2.insert :
3.lenth :
==================
masukan pilihan anda =
1
kata1 :novi
kata2 : yanti
kata3 : 2ka16
novi yanti 2ka16
apakah anda ingin mengulanginya?
y
masukan pilihan anda =
2
kata1 :novi
kata2 :yanti
kata3 :opi
noviya&ntiopi
apakah anda ingin mengulanginya?
y
masukan pilihan anda =
3
kata1 :struktur
kata2 :organisasi
kata3 :data2
panjang string d:23

Selasa, 01 Maret 2011

struktur & organisasi data

programnya dibuat dengan menggunakan turbo pascal 7.0
inputnya

program man_string;
uses crt;
var s : string;
I:integer;
h:string;
const a=' struktur';
b=' organisasi';
c=' data';
begin
ClrScr;
S:=concat (a,b,c);
Writeln (s);
Insert (' & ',s,9);
Writeln(s);
Delete (s,7,5);
Writeln (s);
h:=Copy (s,1,5);
Writeln (h);
l:= Length(s);
Writeln ('Panjangnya string S : ',l);
Writeln ('Posisi "data" pada nilai S : ',POS('data',s));
readln;
END.

output dari program diatas :
struktur organisasi data
struktur & organisasidata
struktganisasi data
struk
panjang string S:20
posisi "data" pada nilai :17