Selasa, 15 Maret 2011

tugas infix SOD

uses wincrt;

const max_elemen = z100;

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

var infix : z100;
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 : z100);
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');
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.

Selasa, 01 Maret 2011

Tugas Struktur Organisasi Data 2

SOAL :
1. buat program ketentuan sebagai berikut :
a. Panjang string
b. Mengabungkan dua string
c. Menyisipkan string kedalam string lain
2. Buat program untuk menampilkan jurusan dan angkatan seorang mahasiswa universitas gunadarma berdasarkan NPM


jawaban

no.1

uses crt;
var
unt: char;
w,z: integer;
a,b,c,d,x,y : string;
begin
clrscr;
repeat
writeln('----menu---');
writeln('1. PANJANG STRING');
writeln('2. GABUNG STRING');
writeln('3. SISIP STRING');
writeln('MASUKAN PILIHAN: ');
readln(w);
case w of
1:begin
clrscr;
writeln(' PANAJNG STRING ');
WRITE('KATA: ');
readln(a);
w:=length (a);
writeln (w);
readln;
end;
2:begin
clrscr;
writeln ('GABUNG STRING');
write ('kata1: ');
readln (b);
write ('kata2: ');
readln (c);
x:=concat (b,c);
writeln (x);
readln;
end;
3:begin
clrscr;
writeln('sisip string');
write('kata1: ');
readln(y);
write('kata yang disisipkan: ');
readln(d);
write('akan disisipkan di: ');
readln(z);
insert(d,y,z);
writeln('hasilnya adalah: ',y);
readln;
end;
end;
writeln('masih mau kemenu ? (y/n'));readln(unt);
until(unt='n');
end.
no.2
uses crt;
var NPM,x,y,z,j: string;
x,y,z : integer;
begin
clrscr;
write ('Masukan NPM Anda ');
readln (NPM);
x:=copy(NPM,1,1);
if x= '1' then y:='S1-Sistem Informasi'
else
if x= '2' then y:='S1-Sistem Komputer'
else
if x= '3' then y:='S1-Sistem Informatika'
else
if x= '4' then y:='S1-Psikologi'
else
y:=' ';
if y<>' ' then
writeln('Jurusan Anda ',' ',x,' ','Dengan Kode ',y)
else
writeln('MAAF,ANDA SALAH MEMASUKAN NPM !!');
z:=copy (NPM,4,2);
val(z,a,b);
if a>81 then
writeln('anda akan masuk angkatan 90',a,'.')
else begin
if a<10 then
begin
str(a:1,j);
insert('0',j,1);
writeln('anda termasuk angkatan 20',j,'.');
end;
readln;
end;
end.