Урок 15.Задание №19 Задача про банкомат
Primary tabs
Пользователь вводит целое число - сумму в некоторой валюте, требуется выдать эту сумму купюрами наибольшего достоинства.
Напишите программу, которая в качестве результата скажет как именно надо разменять указанную сумму купюрами наибольшего достоинства (укажет количество для купюры каждого типа)
Например, пусть у нас набор купюр 1000, 500, 100 и 50 рублей:
Сумму 350 рублей: по задаче следует выдать как: 3 по 100 и 1 по 50
Сумму 520 рублей: таким набором разменять нельзя.
program bancomat;
type intArr = array[ 1..7 ] of integer; // секция обьявления типов
var sum,i, valueMoney,lenArr,countMoney,balance : integer;
s,Money,count,str_res : string;
lab : boolean;
arrMoney : intArr;
begin
lab := True;
// заполнение массива купюр
arrMoney[1] := 50;
arrMoney[2] := 100;
arrMoney[3] := 200;
arrMoney[4] := 500;
arrMoney[5] := 1000;
arrMoney[6] := 2000;
arrMoney[7] := 5000;
while(lab) do
begin
i := 0;
lenArr := high(arrMoney);
writeln('input sum: ');
readln(sum);
if(sum > 0) and (sum mod 100 = 0) or (sum mod 100 = arrMoney[1]) then
begin
while(i < high(arrMoney)) do
begin
valueMoney := arrMoney[lenArr]; // последний элемент массива
if (sum >= valueMoney) then
begin
countMoney := sum div valueMoney;
balance := sum mod valueMoney;
Str(countMoney,count);
Str(valueMoney,Money);
s := count +' '+ 'by'+' '+ Money +' '+ 'rubl'+ ' ';
str_res += s;
s := '';
sum := balance;
i += 1;
lenArr -= 1;
end
else
begin
lenArr -= 1;
i += 1;
end;
end;
i := 0;
lab := False;
writeln(str_res); // вывод результата
writeln('end');
end;
end;
readln(); // удерживаем консоль
end.
- Log in to post comments
- 2221 reads
vedro-compota
Thu, 04/22/2021 - 21:02
Permalink
правки
_____________
матфак вгу и остальная классика =)