Задача 19 Урок 15
Primary tabs
Задача про банкомат:
Пользователь вводит целое число - сумму в некоторой валюте, требуется выдать эту сумму купюрами наибольшего достоинства.
Напишите программу, которая в качестве результата скажет как именно надо разменять указанную сумму купюрами наибольшего достоинства (укажет количество для купюры каждого типа)Например, пусть у нас набор купюр 1000, 500, 100 и 50 рублей:
- Сумму 350 рублей: по задаче следует выдать как: 3 по 100 и 1 по 50
- Сумму 520 рублей: таким набором разменять нельзя.
Указания по возможному оформлению (можно оформлять и иначе):
Напишите процедуру, которая:
- принимает на вход число (сумму) по значению
- массив "достоинств" купюр отсортированный по убыванию (предположим, что видов купюр не может быть больше 10) по значению
- массив для "количеств купюр" по ссылке
- булевский параметр успешности подбора купюр (некоторые суммы вообще разменять нельзя)
После выполнения процедуры в четвертом параметре должен быть true или false, а в массиве "количеств" должены находится находится значения, на основании которых банкомант мог бы выдать купюры.
procedure bankomat(s: integer; a: array of integer; z: boolean);
var i: integer;
begin
repeat
write('Введите сумму: ');
readln(s);
writeln();
if s mod 50 = 0 then z := true
else writeln('В банкомате отсутствуют купюры нужного достоинства');
until z;
for i := 0 to 3 do
if s div a[i] > 0 then
begin
writeln(s div a[i], ' по ', a[i]);
s := s mod a[i];
end;
end;
var sb: integer;
zb: boolean;
ab: array [1..4] of integer = (1000, 500, 100, 50);
begin
bankomat(sb, ab, zb);
readln();
end.- Log in to post comments
- 682 reads