Урок 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
- 703 reads
vedro-compota
Sun, 12/18/2022 - 15:44
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)