Program ini adalah tugas praktikum struktur data yang ketiga.
dalam program ini kita akan menginput beberapa data pelanggan dan setelah penginputan berakhir maka akan ditampilkan daftar pelanggan dalam bentuk tabel dan diurutkan sesuai dengan jumlah pembayaran mulai dari yang terbesar/tertinggi hingga yang terkecil seperti terlihat pada screenshot di samping.
dan juga akan dihitung jumlah pelanggan setiap golongan, jumlah denda yang harus dibayarkan, tak ketinggalan akan ditampilkan juga nama pelanggan dengan jumlah pembayaran terbesar dan terkecil.
Source Code :
Program pdam;uses crt;
var nama : array[1..100] of string[25];
gol : array[1..100] of char;
jpakai : array[1..100] of integer;
jbayar : array[1..100] of real;
tanggal : integer;
ulang,e : char;
beban, harga, bayar : longint;
c,denda, jdenda : real;
a,b,d,i, ja, jb , jc, max : integer;
f : string;
begin
clrscr;
i:=1;
repeat
write('Nama pelanggan = ');
readln(nama[i]);
write('Golongan meter = ');
readln(gol[i]);
if gol[i] = 'A' then
begin
beban := 30000;
harga := 3000;
ja := ja+1;
end;
if gol[i] = 'B' then
begin
beban := 40000;
harga := 4000;
jb := jb+1;
end;
if gol[i] = 'C' then
begin
beban := 50000;
harga := 5000;
jc := jc+1
end;
write('Jumlah Pemakaian = ');
readln(jpakai[i]);
bayar := jpakai[i] * harga + beban;
write('Tanggal pembayaran = ');
readln(tanggal);
if (gol[i] = 'A') and (tanggal > 10) then
denda := 0.05 * bayar;
if (gol[i] = 'B') and ((tanggal < 10) or (tanggal > 20)) then
denda := 0.05 * bayar;
if (gol[i] = 'C') and (tanggal < 20) then
denda := 0.05 * bayar;
jdenda := jdenda + denda;
jbayar[i] := bayar + denda;
writeln('Biaya beban = ',beban);
writeln('Harga air /m3 = ',harga);
writeln('Denda = ',denda:2:2);
writeln('Jumlah pembayaran = ',jbayar[i]:2:2);
write('masih ada data ? [Y/T] ');
readln(ulang);
denda:=0;
max:=i;
inc(i);
until ulang = 'T';
writeln;
writeln('Daftar Pelanggan PDAM Kota Makassar ');
writeln('----------------------------------------------------------- ');
writeln('No. Nama Pelanggan Gol. Meter Jml. Pakai Jml. Pembayaran ');
writeln('----------------------------------------------------------- ');
for a:=1 to max-1 do
begin
for b:=a+1 to max do
begin
if jbayar[a] > jbayar[b] then
begin
c := jbayar[a];
jbayar[a] := jbayar[b];
jbayar[b] := c;
d:= jpakai[a];
jpakai[a] := jpakai[b];
jpakai[b] := d;
e:= gol[a];
gol[a] := gol[b];
gol[b] := e;
f := nama[a];
nama[a] := nama[b];
nama[b] := f;
end;
end;
end;
for i:=1 to max do
begin
writeln(i:2,'. ',nama[i]:13,' ',gol[i]:7,' ',jpakai[i]:9,' ',jbayar[i]:18:2);
end;
writeln('----------------------------------------------------------- ');
writeln('Jumlah Pelanggan Golongan A : ',ja);
writeln('Jumlah Pelanggan Golongan B : ',jb);
writeln('Jumlah Pelanggan Golongan C : ',jc);
writeln('Total Jumlah Denda : Rp. ',jdenda:2:2);
writeln('Nama Pelanggan dengan Pembayaran Terbesar : ',nama[max]);
writeln('Nama Pelanggan dengan Pembayaran Terkecil : ',nama[1]);
readln;
end.
Comments
Post a Comment