uses crt;
const max=10;
type stack=record
rasa:array[1..max] of string;
harga:array[1..max] of integer;
atas,depan,belakang:0..max;
end;
var s,t:stack;
rasabaru,rasaambil:string;
hargabaru,hargaambil:integer;
pilih:1..4;
lagi:boolean;
cacah:byte;
function ful(s:stack):boolean;
begin
if s.atas=max then ful:=true else ful:=false;
end;
function empty(s:stack):boolean;
begin
if s.atas=0 then empty:=true else empty:=false;
end;
procedure push(var s:stack;r:string;h:integer);
begin
if ful(s) then writeln('tumpukan sudah penuh')
else
begin
inc(s.atas);
s.rasa[s.atas]:=r;s.harga[s.atas]:=h;
end;
end;
procedure cariambil(var s:stack);
var cari:string;
ketemu:boolean;
i,k,posisi:byte;
ulang:char;
begin
ketemu:=false;t.atas:=0;
cacah:=0;
write('yang akan dibeli rasa apa? ');readln(cari);
for i:=1 to s.atas do
begin
if s.rasa[i]=cari then
begin ketemu:=true;posisi:=1;end;
end;
{mengeluarkan kue diatas posisi lokasi ke stack}
if ketemu then
begin
{mengeluarkan kue diatas posisi}
for k:=s.atas downto posisi+1 do
begin
inc(t.atas);t.rasa[t.atas]:=s.rasa[k];
t.harga[t.atas]:=s.harga[k];
end;
s.atas:=posisi;
{mengeluarkan kue yang diambil dari stack kue}
rasaambil:=s.rasa[s.atas];hargaambil:=s.harga[s.atas];
writeln('anda telah membeli bolu rasa ',rasaambil,' seharga Rp',hargaambil:6);
dec(s.atas);
{mengambil kue ke posisi semula setelah dijual}
for k:=t.atas downto 1 do
begin
inc(s.atas);
s.rasa[s.atas]:=t.rasa[k];
s.harga[s.atas]:=t.harga[k];
end;
end
else
writeln('maaf rasa yang anda cari sudah habis/tidak tersedia');
writeln;
{membeli yang dipilih}
write('mau cari rasa lain ? <y/t> ');readln(ulang);
end; {end procedure}
procedure cetak(s:stack);
var i:byte;
begin
if s.atas=0 then writeln('tidak ada kue dalam tumpukan')
else
begin
clrscr;
writeln('PERSEDIAAN KUE DI TOKO BOLU JAYA');
writeln('======================================');
writeln('no rasa kue harga ');
writeln('======================================');
for i:=s.atas downto 1 do
writeln(i:3,' ',s.rasa[i]:12,' ',s.harga[i]:17);
writeln('======================================');
end; {end if}
end;
{program utama}
begin
lagi:=true;
while lagi do
begin
clrscr;
writeln(' TOKO BOLU JAYA ');
writeln('1. Menambah kue ke tumpukan');
writeln('2. mengambil bolu yang dipilih pelanggan');
writeln('3. cetak stok kue');
writeln('4. selesai');
writeln;write('masukan pilihan anda ==>');readln(pilih);
case pilih of
1: begin
write('masukan rasa bolu yang baru : ');readln(rasabaru);
if (rasabaru='coklat') then hargabaru:=15000 else if (rasabaru='keju') then
hargabaru:=17000 else if (rasabaru='kacang') then hargabaru:=16000 else
if (rasabaru='moka') then hargabaru:=14500 else if (rasabaru='stroberi') then
hargabaru:=16400 else hargabaru:=17500;
push(s,rasabaru,hargabaru);
end;
2: cariambil(s);
3: cetak(s);
4: begin
writeln('Terimakasih sudah berbelanja :)');
lagi:=false;
end;
end;
readln;
end;
end.
Jumat, Desember 13, 2013
Langganan:
Posting Komentar (Atom)

0 komentar:
Posting Komentar