Задача 20 урок 15 "Банкомат"

Задача 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.