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 *)