Задача 20 урок 15 "Банкомат"
Primary tabs
Задача 20 урок 15 "Банкомат"
Пользователь вводит целое число - сумму в некоторой валюте, требуется выдать эту сумму купюрами наибольшего достоинства.
Напишите программу, которая в качестве результата скажет как именно надо разменять указанную сумму купюрами наибольшего достоинства (укажет количество для купюры каждого типа)
program bankomat;
type
myArr = array[1..4] of integer;
var a, b: myArr;
sum, K1, K2, K3, K4, i: integer;
itog: boolean;
procedure bank2(var b: myArr);//процедура перестроения достоинства
var j, i, k: integer; //купюр, если их ввели не по порядку
begin //100 1000
for k:=1 to 3 do //50 --> 500
begin //500 100
for i:=1 to 3 do //1000 50
if b[i]<b[i+1] then
begin
j:=b[i];
b[i]:=b[i+1];
b[i+1]:=j;
end;
end;
end;
procedure bank(sum: integer; a: myArr; var b: myArr; var itog: boolean);
var ost: integer; //Процедура подбора купюр
begin
itog:=true;
if sum mod a[1] = 0 then
b[1]:= sum div a[1]
else
begin
ost:=sum mod a[1];
b[1]:=(sum-ost) div a[1];
if ost mod a[2]=0 then
b[2]:= ost div a[2]
else
begin
b[2]:= ost div a[2];
ost:=ost mod a[2];
if ost mod a[3]=0 then
b[3]:= ost div a[3]
else
begin
b[3]:= ost div a[3];
ost:=ost mod a[3];
if ost mod a[4]=0 then
b[4]:= ost div a[4]
else
itog:=false;
end;
end;
end;
end;
begin
itog:=false;
writeln('Vvedite Summu:');
readln(sum); // запрос суммы для выдачи банкоматом
writeln('vibrat dostoinstvo kupur:');
readln(K1);
a[1]:=K1;
readln(K2);
a[2]:=K2;
readln(K3);
a[3]:=K3;
readln(K4);
a[4]:=K4;
bank2(a);//отправляе массив на перестроение
bank(sum, a, b, itog);//отправляем массив на подбор купюр
if itog then
for i:=1 to 4 do
writeln(a[i],'$ X ',b[i])
else
writeln('Error');
readln();
end.
- Log in to post comments
- 1285 reads