program money;
(* This program takes any given amount of money (in pence) and converts it
into the relevent number of œ10, œ5, œ1, 50p, 20p, 10p, 5p, 2p and 1p
notes/coins *)
type NOTE_COIN = (note10, note5,
coin100, coin50, coin20, coin10, coin5, coin2, coin1);
var Pence, Number: ARRAY[note10..coin1] of INTEGER;
Money: INTEGER;
Denomination: NOTE_COIN;
procedure Initialise_Array;
begin
Pence[note10]:=1000; Pence[note5] :=500; Pence[coin100]:=100;
Pence[coin50]:= 50; Pence[coin20]:= 20; Pence[coin10] := 10;
Pence[coin5] := 5; Pence[coin2] := 2; Pence[coin1] := 1;
end;
procedure List_Denominations;
begin
WriteLn ('10 pounds: ',Number[note10]);
WriteLn (' 5 pounds: ',Number[note5]);
WriteLn (' 1 pounds: ',Number[coin100]);
WriteLn ('50 pences: ',Number[coin50]);
WriteLn ('20 pences: ',Number[coin20]);
WriteLn ('10 pences: ',Number[coin10]);
WriteLn (' 5 pences: ',Number[coin5]);
WriteLn (' 2 pences: ',Number[coin2]);
WriteLn (' 1 pences: ',Number[coin1]);
end;
begin (* main *)
Initialise_Array;
ClrScr; Write ('Enter money (in pence): '); ReadLn (Money);
for Denomination:=note10 to coin1 do
begin
Number[Denomination]:=Money DIV Pence[Denomination];
Money:=Money MOD Pence[Denomination];
end;
List_Denominations;
end. (* main *)