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

    var
    s,i,q,f,t,z,y:integer;
    begin
    write('Введите сумму: ');
    readln(s);
    while s>5000 do
    s:=s-5000;
    i:=i+1;
    writeln('Купюр "5000" всего: ',i);
    while s>1000 do
    s:=s-1000;
    q:=q+1;
    writeln('Купюр "1000" всего: ',q);
    while s>500 do
    s:=s-500;
    f:=f+1;
    writeln('Купюр "500" всего: ',f);
    while s>100 do
    s:=s-100;
    t:=t+1;
    writeln('Купюр "100" всего: ',t);
    while s>50 do
    s:=s-50;
    z:=z+1;
    writeln('Купюр "50" всего: ',z);
    while s>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 n>0 then begin    Writeln('Банкнот "5000" всего: ',n);    s:=s mod 5000    end;  n:=s div 1000;  if n>0 then begin    Writeln('Банкнот "1000" всего: ',n);    s:=s mod 1000    end;  n:=s div 500;  if n>0 then begin    Writeln('Банкнот "500" всего: ',n);    s:=s mod 500    end;  n:=s div 100;  if n>0 then begin    Writeln('Банкнот "100" всего: ',n);    s:=s mod 100    end;  n:=s div 50;  if n>0 then begin    Writeln('Банкнот "50" всего: ',n);    s:=s mod 50    end;  n:=s div 10;  if n>0 then begin    Writeln('Банкнот "10" всего: ',n);    s:=s mod 10    end;  if s>0 then Writeln('Недоплачено: ',s)end.Пример:Введите сумму: 162504Банкнот "5000" всего: 32Банкнот "1000" всего: 2Банкнот "500" всего: 1Недоплачено: 42. С массивом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 n>0 then begin      Writeln('Банкнот "',k[i],'" всего: ',n);      s:=s mod k[i]      end    end;  if s>0 then Writeln('Недоплачено: ',s)end.ПримерВведите сумму: 15470Банкнот "5000" всего: 3Банкнот "100" всего: 4Банкнот "50" всего: 1Банкнот "10" всего: 2
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years