Selasa, 15 Maret 2011

TUGAS 2 STRUKTUR ORGANISASI DATA NOTASI INFIX MENJADI POSTFIX

soal:
1. Merubah notasi infix menjadi postfix

jawab:

uses crt;
const max_elemen = u19;

type u19 = string [max_elemen];

tumpukan = record
rinci : u19;
atas : 0..max_elemen
end;

var infix : u19;

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 Mata Kuliah Struktur Organisasi Data

Tugas Struktur Organisasi Data ini saya kerjakan malam ini pukul 21.50 WIB
Insyallah dan berharap smoga mendapatkan nilai yg sempurna oleh Dosen mata kuliah SOD..Amin..Isi soalnya adalah sebagai berikut:
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 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(' PANJANG 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.

jawaban 2:
uses crt;
var NPM,a,b,c,d: string;
x,y,z : integer;
begin
clrscr;
write ('Masukan NPM Anda ');
readln (NPM);
a:=copy(NPM,1,1);
if a= '1' then b:='S1-Sistem Informasi'
else
if a= '2' then b:='S1-Teknik Industri'
else
if a= '3' then b:='S1-Manajemen Informatika'
else
b:=' ';
if b<>' ' then
writeln('Jurusan Anda ',' ',a,' ','Dengan Kode ',b)
else
writeln('Maaf,Ada Kesalahan Dalam NPM Anda !!!');
c:=copy (NPM,4,2);
val(c,x,y);
if x>81 then
writeln('anda akan masuk angkatan 19',x,'.')
else begin
if x<10 then
begin
str(x:1,d);
insert('0',d,1);
writeln('anda termasuk angkatan 20',d,'.');
end;
readln;
end;
end.