Условие задачи: Клиент обязан заплатить в кассу S рублей. У него

Условие задачки: Покупатель обязан заплатить в кассу S рублей. У него имеются 10, 50, 100, 500, 1000 и 5000 рублей Сколько купюр различного плюсы даст покупатель, если он начинает выплачивать с самых крупных купюр? Что не так в коде?:

var
s,i,q,f,t,z,y:integer;
begin
write('Введите сумму: ');
readln(s);
while sgt;5000 do
s:=s-5000;
i:=i+1;
writeln('Купюр "5000" всего: ',i);
while sgt;1000 do
s:=s-1000;
q:=q+1;
writeln('Купюр "1000" всего: ',q);
while sgt;500 do
s:=s-500;
f:=f+1;
writeln('Купюр "500" всего: ',f);
while sgt;100 do
s:=s-100;
t:=t+1;
writeln('Купюр "100" всего: ',t);
while sgt;50 do
s:=s-50;
z:=z+1;
writeln('Купюр "50" всего: ',z);
while sgt;10 do
s:=s-10;
y:=y+1;
writeln('Купюр "10" всего: ',y);
end.


Задать свой вопрос
1 ответ
В Вашем варианте после while нужно писать begin, а после Writeln - end. Но само по себе решение некрасивое.
Вот Для вас еще два на выбор.

1. Без массива

var
  s,n:integer;
begin
  Write('Введите сумму: '); Read(s);
  n:=s div 5000;
  if ngt;0 then begin
    Writeln('Банкнот "5000" всего: ',n);
    s:=s mod 5000
    end;
  n:=s div 1000;
  if ngt;0 then begin
    Writeln('Банкнот "1000" всего: ',n);
    s:=s mod 1000
    end;
  n:=s div 500;
  if ngt;0 then begin
    Writeln('Банкнот "500" всего: ',n);
    s:=s mod 500
    end;
  n:=s div 100;
  if ngt;0 then begin
    Writeln('Банкнот "100" всего: ',n);
    s:=s mod 100
    end;
  n:=s div 50;
  if ngt;0 then begin
    Writeln('Банкнот "50" всего: ',n);
    s:=s mod 50
    end;
  n:=s div 10;
  if ngt;0 then begin
    Writeln('Банкнот "10" всего: ',n);
    s:=s mod 10
    end;
  if sgt;0 then Writeln('Недоплачено: ',s)
end.

Пример:
Введите сумму: 162504
Банкнот "5000" всего: 32
Банкнот "1000" всего: 2
Банкнот "500" всего: 1
Недоплачено: 4

2. С массивом

const
  k:array[1..6] of integer=(5000,1000,500,100,50,10);
var
  s,n,i:integer;
begin
  Write('Введите сумму: '); Read(s);
  for i:=1 to 6 do begin
    n:=s div k[i];
    if ngt;0 then begin
      Writeln('Банкнот "',k[i],'" всего: ',n);
      s:=s mod k[i]
      end
    end;
  if sgt;0 then Writeln('Недоплачено: ',s)
end.

Пример
Введите сумму: 15470
Банкнот "5000" всего: 3
Банкнот "100" всего: 4
Банкнот "50" всего: 1
Банкнот "10" всего: 2
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт