Senin, 24 Mei 2010

program mengunakan pointer

uses crt;
type datapnddk = record
noktp : string;
nama : string[30];
alamat : string[40];
goldarah : string[2];
thnklhrn : integer;
umur : integer;
end;

type pointer = ^simpul;
simpul = record
data : datapnddk;
next : pointer;
end;
var p,bantu,baru: pointer;
umur,x,a :byte;
jumlaha,jumlahb,jumlahab,jumlaho:integer;

procedure cetak;
begin
new(bantu);
bantu := p;
while bantu^.next <> nil do
begin
writeln;
writeln('no ktp :',bantu^.next^.data.noktp);
writeln('nama : ',bantu^.next^.data.nama);
writeln('alamat :',bantu^.next^.data.alamat);
writeln('gol darah :',bantu^.next^.data.goldarah);
writeln('thnlahir :',bantu^.next^.data.thnklhrn);
umur := 2010 - bantu^.next^.data.thnklhrn;
writeln('umur :',umur);
bantu := bantu^.next;
end;
writeln;
writeln('no ktp : ',bantu^.next^.data.noktp);
writeln('nama :',bantu^.next^.data.nama);
writeln('alamat :',bantu^.next^.data.alamat);
writeln('goldarah :',bantu^.next^.data.goldarah);
writeln('thnlahir :',bantu^.next^.data.thnklhrn);
umur := 2010 - bantu^.next^.data.thnklhrn;
writeln('umur :',umur);
end;

begin
clrscr;
jumlaha:=0;
jumlahb:=0;
jumlahab:=0;
jumlaho:=0;
new(p); p:=nil;
write('masukkan no.ktp anda(x=selesai) :'); readln(p^.data.noktp);
repeat
write('masukkan nama anda :'); readln(p^.data.nama);
write('masukkan alamat anda :'); readln(p^.data.alamat);
write('masukkan gol darah :'); readln(p^.data.goldarah);
if p^.data.goldarah = 'A' then
begin
jumlaha := jumlaha+ 1;

end;
if p^.data.goldarah = 'B' then
begin
jumlahb := jumlahb + 1;

end;
if p^.data.goldarah = 'AB' then
begin
jumlahab := jumlahab + 1;

end;
if p^.data.goldarah = 'O' then
begin
jumlaho := jumlaho + 1;
end;
write('masukkan thnklhrn :'); readln(p^.data.thnklhrn);
umur := 2010 - p^.data.thnklhrn;
writeln('umur anda :',umur);
new(baru);
baru^.data.noktp := p^.data.noktp;
baru^.data.nama := p^.data.nama;
baru^.data.alamat := p^.data.alamat;
baru^.data.goldarah := p^.data.goldarah;
baru^.data.thnklhrn := p^.data.thnklhrn;
baru^.data.umur := p^.data.umur;
baru^.next := nil;
if p = nil then p := baru
else
begin
if baru^.next^.data.umur < baru^.next^.data.umur then;

baru^.next := p;
p := baru;
end;

write('masukkan no.ktp (x=selesai) :'); readln(p^.data.noktp);
until p^.data.noktp = 'x';

writeln;
writeln('isi linked list sekarang :');
begin
repeat
cetak;
until bantu^.next = nil;
writeln;
writeln('jumlah penduduk gol A : ',jumlaha);
writeln('jumlah penduduk gol B :',jumlahb);
writeln('jumlah penduduk gol AB :',jumlahab);
writeln('jumlah penduduk gol O :',jumlaho);

end;

readln;
end.

Tidak ada komentar:

Posting Komentar