Jumat, Desember 13, 2013

program pascal stack

Diposting oleh ajeng diana di 07.45
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.

0 komentar:

Posting Komentar

 

ajeng diana Copyright © 2015 Design by ajengdiana dianastore