Задать вопрос
17 февраля, 14:48

Условие задачи: Покупатель должен заплатить в кассу 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.

+2
Ответы (1)
  1. 17 февраля, 18:16
    0
    В Вашем варианте после 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
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Условие задачи: Покупатель должен заплатить в кассу S рублей. У него имеются 10, 50, 100, 500, 1000 и 5000 рублей Сколько купюр разного ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы