Условие задачи: Покупатель должен заплатить в кассу S рублей. У него имеются 10, 50, 100

Условие задачи: Покупатель должен заплатить в кассу 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.
Гость
Ответ(ы) на вопрос:
Гость
В Вашем варианте после 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 Недоплачено: 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 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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы