contoh pemograman pascal linkedlist pombensin


uses wincrt;
const max=20;
type pointer=^recpoint;
     recpoint=record
     nama:string;
     berikutnya:pointer;
     end;

type pelanggan=record
     nama1:string;
     jum:integer;total:longint;
     end;
type larik=array[1..max] of pelanggan;
   
var List,akhir:pointer;
    namabaru:string;
    pom:larik;
    stok:longint;
    rekap:longint;
    lagi:boolean;n:byte;
    pil:1..7;

procedure tambah_belakang(var L:pointer;nm:string);
var baru:pointer;
begin
new(baru);
baru^.nama:=nm;baru^.berikutnya:=nil;
if L=nil then
   begin
        L:=baru;akhir:=baru;
   end
else{tambah akhir}
begin
     akhir^.berikutnya:=baru;
     akhir:=baru;
     akhir^.berikutnya:=nil;
end;
end;

procedure layanan(var L:pointer);
var bantu:pointer;
   beli:integer;
   label ulang;
   

begin
new(bantu);
if L=nil then writeln('tidak ada pelanggan di antrean')
else
begin
     bantu:=L;
     L:=bantu^.berikutnya;inc(n);
     pom[n].nama1:=bantu^.nama;
     writeln('yang dilayani  :',pom[n].nama1);
ulang:write('berapa liter?    : ');readln(beli);
     if (beli>stok) then
     begin
          writeln('stok tidak cukup, ulang');goto ulang;
     end
     else
     begin
          pom[n].jum:=beli;
          pom[n].total:=pom[n].jum*4500;
          rekap:=rekap+pom[n].total;
          stok:=stok-beli;
     end;
end;
dispose(bantu);
end;

procedure cetakList(L:pointer);
var bantu:pointer;
    i:byte;

begin
new(bantu);i:=0;
bantu:=L;
if bantu=nil then writeln('Tidak ada pelanggan di antrean')
else
begin
     while bantu<>nil do
     begin
          inc(i);
          writeln('posisi ',i,'  ',bantu^.nama);
          bantu:=bantu^.berikutnya;
     end;
end;
end;

procedure Cetakpom(var x:larik);
var i:byte;

begin
if n=0 then writeln('tidak ada pelanggan dalam daftar')
else
begin
     writeln('=============================================');
     writeln('no    nama           jumlah      Total');
     writeln('---------------------------------------------');
     for i:=1 to n do writeln(i:3,'    ',x[i].nama1:10,'   ',x[i].jum:5,'  ',x[i].total:8);
end;
     writeln('---------------------------------------------');
end;

procedure isistok;
var tambah:word;

begin
write('mau tambah stok barapa? ');readln(tambah);
stok:=stok+tambah;
end;



begin{program utama}
lagi:=true;List:=nil;
while lagi do
begin
clrscr;
writeln('1. Tambah antrian');
writeln('2. layanan pelanggan');
writeln('3. Cetak antrian');
writeln('4. Cetak pelanggan');
writeln('5. isi stok');
writeln('6. Rekap');
writeln('7. Selesai');
writeln('Pilihan anda <1-7> ');readln(pil);
case pil of
1: begin
   writeln('nama baru           ==>  ');readln(namabaru);
   tambah_belakang(List,namabaru);
   end;
2: if stok=0 then writeln('stok habis') else layanan(List);
3: cetakList(List);
4: cetakpom(pom);
5: isistok;
6: begin
   writeln('Jumlah pendapatan Rp ',rekap);
   writeln('Jumlah pengunjung    ',n,' orang');
   writeln('Sisa stok            ',stok,' liter');
   end;
7: begin
   writeln('Terimakasih');lagi:=false;end;
end;
readln;
end;
donewincrt;
end.

//fuiqur

0 comments

Tambahkan Komentar Anda

semua berawal dari diri kita

 
Copyright © 2012 wooodiez ~ Template By : Jasriman Sukri

Kamu bisa menulis deskripsi disini