Program SIMULASI_PARKIR;
uses crt;
const Terus = 'Tekan sembarang tombol untuk terus';
type Str10 = string[10];
Antri = ^simpul;
Simpul = record
Info : Str10;
Berikut : Antri
end;
var Depan,
Belakang : Antri;
Pilih,
P : char;
Keterangan : string;
No_Plat : Str10;
procedure INISIALISASI (var Front, Rear: Antri);
begin
new(Front);
Front^.Info := chr(0);
Front^.Berikut := Front;
Rear := Front
end;
procedure MASUK (var Front, Rear : Antri;
No_Plat : Str10);
var Baru : Antri;
begin
new(Baru);
Baru^.Info := No_Plat;
Baru^.Berikut := Front;
Rear^.Berikut := Baru;
Rear := Baru
end;
procedure KELUAR
(var Front, Rear : Antri;
NO_Plat : Str10);
var Mobil, Bantu, TM : Antri;
P : char;
Nomor : integer;
function ADA_MOBIL
(var Lok : Antri; D : Antri;
X : Str10) : boolean;
var Ada : boolean;
begin
Ada := false;
Lok := D^.Berikut;
repeat
if Lok^.Info = X then
Ada := true
else
Lok := Lok^.Berikut
until Ada or (Lok = D);
ADA_MOBIL := Ada
end;
begin
if not (ADA_MOBIL(Mobil, Front, No_Plat)) then
begin
gotoxy(40,9);
writeln('MOBIL YANG DIMAKSUD TIDAK ADA');
gotoxy(40,11);write(Terus);
P := readkey
end
else
if Mobil = Front^.Berikut then
begin
Front^.Berikut := Mobil^.Berikut;
dispose(Mobil)
end
else
begin
Bantu := Front;
clrscr;
write ('Mobil yang dikeluarkan ');
writeln('sementara:');
write('------------------------');
writeln('----------'); writeln;
Nomor := 1;
repeat
Bantu := Bantu^.Berikut;
write('Mobil ke', Nomor:3);
write(', Nomor Plat: ');
writeln(Bantu^.Info);
inc(Nomor);
until Bantu^.Berikut^.Info = No_Plat;
writeln; write(Terus);
P := readkey;
Bantu^.Berikut := Mobil^.Berikut;
dispose(Mobil)
end
end;
procedure BACA_MOBIL (Front : Antri);
var Bantu : Antri;
Nomor : integer;
P : char;
begin
Bantu := Front^.Berikut;
if Bantu = Front then
begin
gotoxy(1,4);
write('TEMPAT PARKIR KOSONG'); writeln
end
else
begin
Nomor := 1;
repeat
write('Mobil ke',Nomor:3,', Nomor');
writeln(' Plat: ',Bantu^.Info);
Bantu := Bantu^.Berikut;
inc(Nomor)
until Bantu = Front
end
end;
begin
INISIALISASI(Depan,Belakang);
repeat
clrscr; writeln('SIMULASI TEMPAT PARKIR');
write('---------------------------------');
writeln('-------------');
writeln; writeln(' M : Mobil Masuk');
writeln(' K : Mobil Keluar');
writeln(' C : Cetak Data Mobil');
writeln(' S : Selesai');
writeln; writeln(' PILIH SALAH SATU: ');
repeat
gotoxy(23,10); writeln(' ');
gotoxy(23,10); Pilih := upcase(readkey);
until Pilih in ['M','K','S','C'];
case Pilih of
'M' : Keterangan := 'MOBIL MASUK';
'K' : Keterangan := 'MOBIL KELUAR';
'C' : begin
clrscr;
write('Data Mobil di ');
writeln('Tempat Parkir');
write('--------------');
writeln('-------------'); writeln;
BACA_MOBIL(Depan); writeln;
write('Tekan sembarang tombol ');
write('untuk kembali ke menu');
P := readkey;
end;
'S' : begin
clrscr;
writeln('SIMULASI SELESAI');
writeln('----------------')
end
end;
if Pilih in ['M','K'] then
begin
gotoxy(40,5); writeln(Keterangan);
gotoxy(40,6); writeln('------------');
gotoxy(40,7);
write('Nomor plat mobil: ');
readln(No_Plat);
if Pilih = 'M' then
MASUK(Depan, Belakang,No_Plat)
else
KELUAR(Depan,Belakang,No_Plat)
end
until Pilih = 'S'
end.
Tidak ada komentar:
Posting Komentar