Урок 15.Задание №19 Задача про банкомат

Урок 15.Задание №19

Пользователь вводит целое число - сумму в некоторой валюте, требуется выдать эту сумму купюрами наибольшего достоинства.
Напишите программу, которая в качестве результата скажет как именно надо разменять указанную сумму купюрами наибольшего достоинства (укажет количество для купюры каждого типа)
Например, пусть у нас набор купюр 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.

vedro-compota's picture

  • переделать решение на процедуру
  • и сразу проверить выдачу 120 рублей на массиве купюр [100, 50, 30,......]

_____________
матфак вгу и остальная классика =)