
Mabeshmat
6 год назад
Условие задачи: Покупатель должен заплатить в кассу 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.
ОТВЕТЫ

Keluzhtep
Aug 6, 2019
В Вашем варианте после 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
Вот Вам еще два на выбор.
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
52