Урок 15 Задача 24
Primary tabs
Пользователь вводит целое число - сумму в некоторой валюте, требуется выдать эту сумму купюрами наибольшего достоинства.
Напишите программу, которая в качестве результата скажет как именно надо разменять указанную сумму купюрами наибольшего достоинства (укажет количество для купюры каждого типа)
type
massiv = array[1..9] of integer;
var
dost, kolich: massiv;
s, i: integer;
q: boolean; // параметр успешности подбора купюр
procedure razmen (s: integer; dost: massiv; var kolich: massiv; var q: boolean);
var
i: integer;
begin
for i:=low(dost) to high(dost) do
begin
if (s >= dost[i]) then
begin
kolich[i]:= s div dost[i];
s:= s mod dost[i];
end else
kolich[i]:= 0;
end;
if s = 0 then // если остаток равен нулю (купюры подобраны)
q:= true; // переключаем параметр успешности подбора купюр
end;
begin // начало тела основной программы
dost[1]:=5000;
dost[2]:=2000;
dost[3]:=1000;
dost[4]:=500;
dost[5]:=200;
dost[6]:=100;
dost[7]:=50;
dost[8]:=10;
dost[9]:=5;
q:= false;
write ('Введите сумму: ');
readln (s);
razmen (s, dost, kolich, q); // вызываем процедуру, передаем сумму, массив достоинств, массив количества, параметр успешности подбора купюр
if q = true then
begin
for i:=low(kolich) to high(kolich) do
if not (kolich[i]=0) then // проверка, чтобы не выводить нулевое количество купюр
begin
write (dost[i], ' x ');
writeln (kolich[i], ' ');
end;
end else
write ('Данную сумму разменять нельзя');
readln();
end.Вывод в консоли:
Введите сумму: 10460 5000 x 2 200 x 2 50 x 1 10 x 1
Введите сумму: 712 Данную сумму разменять нельзя
Введите сумму: 10550 5000 x 2 500 x 1 50 x 1
- Log in to post comments
- 1005 reads
vedro-compota
Sun, 12/18/2022 - 15:44
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)