program pascal queue


program antrian_bioskop;
uses wincrt;  
const max=10;
type queue=record
nama,judul:array[1..max] of string;
depan,belakang:0..max;
end;

type jual=record
nama,judulj:string;
jt:1..8;
total:real;
end;
larik_jual=array[1..20] of jual;
label ulang;

var bioskop,qp:queue;
    jual1:larik_jual;
nb,na,jf,keluar:string;
pil:1..6;
ct:longint; i,j,n:byte;
tot:real;
        ketemu:boolean;

function full(q:queue):boolean;
begin
if (q.belakang=max) then full:=true else full:=false;
end;

function empty(q:queue):boolean;
begin
if (q.belakang=0) then empty:=true else empty:=false;
end;

procedure pushq(var q:queue;x:string);
begin
if full(q) then writeln ('antrian sedang penuh')
else
begin
inc(q.belakang);
q.nama[q.belakang]:=x;
end;
end;

procedure popq(var q:queue);
begin
if empty(q) then writeln('antrian sudah kosong')
else
begin
na:=q.nama[q.depan];
        jf:=q.judul[q.depan];
{digeser}
for i:=1 to (q.belakang-1) do
q.nama[i]:=q.nama[i+1];
dec(q.belakang);
end;
end;

procedure cetak_antrian(var q:queue);
begin
writeln('ANTRIAN YANG ADA SAAT INI');
writeln('------------------------------------');
writeln('antrianno         nama');
writeln('------------------------------------');
for i:=1 to q.belakang do writeln(i:3,' ',q.nama[i]:15);
writeln('------------------------------------');
end;

procedure cetak_pem(var x:larik_jual);
var tot:real;
begin
writeln('Pembelian Tiket Hari Ini');
writeln('---------------------------------------------------------------------');
writeln('|  No |  Nama     |     Judul     |     Jumlah    |     Total    |');
writeln('---------------------------------------------------------------------');
for i:=1 to n do
begin
writeln(i:3,' ',x[i].nama:11,'  ',x[i].judulj:8,'  ',x[i].jt:10,' Tiket           Rp. ',x[i].total:11:2);
tot:=tot+x[i].total;
end;
writeln('---------------------------------------------------------------------');
writeln('-------------------------------------------------Total--Rp ',tot:11:2);
end;

procedure bosan(var q:queue);
var posisi:byte;

begin
ketemu:=false;
write('Masukkan Nama yang ingin keluar ==> ');readln(keluar);
for i:=q.belakang downto 1 do
begin
     if (q.nama[i]=keluar) then
     begin
     ketemu:=true;
     posisi:=i;
     end;
end;
if ketemu then
begin
     for j:=q.belakang downto posisi+1 do
     begin
     inc(qp.belakang);
     qp.nama[qp.belakang]:=q.nama[j];
     end;
q.belakang:=posisi;
na:=q.nama[q.belakang];
dec(q.belakang);
for j:=q.belakang downto 1 do
begin
     inc(q.belakang);
     q.nama[q.belakang]:=qp.nama[j];
end;
end
else
writeln('Nama Tidak ada Dalam Antrian');
end;


begin{utama}
bioskop.depan:=1;
repeat
begin
clrscr;
writeln(' PELAYANAN ANTRIAN BIOSKOP XXI');
writeln('1. Masuk antrian');
writeln('2. Layanan pembelian tiket');
writeln('3. Keluar antrian,bosan');
writeln('4. Cetak antrian');
writeln('5. Cetak pembelian tiket');
writeln('6. Selesai');
write('Pilih 1-6 --> ');readln(pil);
case pil of
1:
begin
write('masukan nama baru yang akan diantri ');readln(nb);
                pushq(bioskop,nb);
end;
2:
begin
if not empty(bioskop) then
begin
popq(bioskop);
ulang:write('saudara ',na,' akan membeli beberapa tiket ? ');readln(ct);
                        write('Masukkan Judul Film !');readln(jf);
if ct>4 then {Jika jumlah tiket>4, ulangi pemasukan}
begin writeln('Maks pembelian 4 tiket, ulang ');goto ulang;end
else
begin
tot:=25000*ct; {max ct 4}
writeln('Anda harus membayar Rp ',tot:8:2);
                        inc(n);
                        jual1[n].nama:=na;
                        jual1[n].judulj:=jf;
                        jual1[n].jt:=ct;
                        jual1[n].total:=tot;
end;
end
else writeln('antrian sudah habis');
end;
3:      begin
                if not empty(bioskop) then bosan(bioskop) else
                writeln('Antrian Sudah Kosong');
                if ketemu and not empty(bioskop) then
                begin
                     writeln('Orang yang Keluar adalah ',na);
                end;
                end;
4: if not empty(bioskop) then cetak_antrian(bioskop) else
writeln('antrian sudah kosong');
5:      begin
                cetak_pem(jual1);
                end;
6: writeln('TERIMAKASIH');
end;
readln;
end
until (pil=6);
end.


0 comments

Tambahkan Komentar Anda

semua berawal dari diri kita

 
Copyright © 2012 wooodiez ~ Template By : Jasriman Sukri

Kamu bisa menulis deskripsi disini