Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 2

.docx
Скачиваний:
14
Добавлен:
04.04.2018
Размер:
125.44 Кб
Скачать

Задание:

3.

Используя перечень номиналов ассигнаций:

Const Nominal: array[0..5] of currency= (5000, 1000, 500, 100, 50, 10); ,

запрограммировать "жадный" алгоритм формирования выдачи заданной суммы в банкомате. Организовать сервис- диалог с заказчиком суммы и учесть в программе возможность отсутствия ассигнаций того или иного номинала.

Код:

var

Form3: TForm3;

Razmen:array of integer;

i,k,a,sum:integer;

const

Nominal:array[0..5] of integer=(5000, 1000, 500, 100, 50, 10);

kol:array [0..5] of integer=(1,2,4,5,10,20);

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

begin

k:=strtoint(edit1.text); //сумма

sum:=0;

if k<10 then

showmessage('Сумма для выдачи слишком мала');

for i:=0 to 5 do

sum:=sum+nominal[i]*kol[i]; //считаем сумму

edit2.Text:=(inttostr(sum));

for i:=0 to 5 do

memo2.lines.add(inttostr(kol[i])+'*'+inttostr(Nominal[i])); //выводим

if sum<k then

showmessage('Сумма не может быть выдана')

else

for i:=0 to 5 do begin //от 0 до 5

a:=k div Nominal[i]; //a присваиваем сумму деленное на 5000,1000...

if a=0 then begin

memo3.lines.add(inttostr(kol[i])+'*'+inttostr(Nominal[i])); //если не делится, но 0

continue

end else begin //иначе

if a>kol[i] then begin //если больше заданного количества

a:=kol[i];

k:=k-a*nominal[i];

memo3.lines.add('0'+'*'+inttostr(Nominal[i]));

end

else begin

k:=k-a*nominal[i];

memo3.lines.add(inttostr(kol[i]-a)+'*'+inttostr(Nominal[i]));

end;

end;

memo1.lines.add(inttostr(a)+'*'+inttostr(Nominal[i])); //выводим

end;

end;

end.

Результат

Блок схема:

Начало

Ввод k

sum:=0;

sum:=0;

k<10

Вывод 'Сумма для выдачи слишком мала'

I=n to (R+i) down to

ii:=0 to 5

Вывод sum

-

I=n to (R+i) down to

sum:=sum+nominal[i]*kol[i];

i=1 tо (k+1)

А

ii:=0 to 5

sum<k

Вывод 'Сумма не может быть выдана'

Вывод kol[i]+'*'+Nominal[i]

-

ii:=0 to 5

a:=k div Nominal[i];

a=0

Вывод kol[i]+'*'+Nominal[i]

+

А

end

А

- +

a>kol[i]

a:=kol[i];

k:=k-a*nominal[i];

Вывод '0'+'*'+Nominal[i]

-

k:=k-a*nominal[i];

Вывод kol[i]-a +'*'+Nominal[i]

Вывод a+'*'+Nominal[i]

+

Соседние файлы в папке Лабы