
Вопрос задан 16.05.2020 в 17:41.
Предмет Информатика.
Спрашивает Пасічник Максим.
Условие задачи: Покупатель должен заплатить в кассу 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
Вот Вам еще два на выбор.
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


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili