Задача 24 Урок 15
Primary tabs
Задача про банкомат:
Пользователь вводит целое число - сумму в некоторой валюте, требуется выдать эту сумму купюрами наибольшего достоинства.
Напишите программу, которая в качестве результата скажет как именно надо разменять указанную сумму купюрами наибольшего достоинства (укажет количество для купюры каждого типа)
type
arr1 = array [1..7] of integer;
arr2 = array [1..7] of integer;
var cash : integer;
flag : boolean;
a : Arr1;
b : arr2;
procedure bank(cash : integer; a : Arr1; var b : arr2; flag : boolean);
var i : integer;
begin
i := 1;
while i <= high(a) do
begin
if cash >= a[i] then
begin
b[i] += 1;
cash := cash - a[i];
flag := true;
if cash = 0 then break;
end
else
begin
i += 1;
flag := false;
end;
end;
if flag then
begin
writeln('receive the following bills');
for i := 1 to 10 do
if b[i] > 0 then
writeln('a bill ', a[i], ' - ', b[i], ' times');
end
else
writeln('it is not possible to issue');
end;
begin
a[1] := 5000;
a[2] := 2000;
a[3] := 1000;
a[4] := 500;
a[5] := 200;
a[6] := 100;
a[7] := 50;
writeln('how much to give out?');
readln(cash);
bank(cash, a, b, flag);
readln();
end.
Вывод консоли:
how much to give out? 20550 receive the following bills a bill 5000 - 4 times a bill 500 - 1 times a bill 50 - 1 times
- Log in to post comments
- 525 reads