Задать вопрос
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.

+3
Ответы (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 рублей Сколько купюр разного ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Сделать так чтобы Writeln был заменен другим словом и повторялься не больше двух раз program choise; var N_M:integer; writeln (' введи номер месяца ') ; readln (N_M) ; case N_M of 1:writeln (' январь ') ; 2:writeln (' февраль ') ;
Ответы (1)
Покупатель должен заплатить в кассу S руб. У него имеются купюры по 1,5,10,50,100,500,1000 и 10000 руб. Сколько купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных купюр? Это паскаль, нужно через while сделать
Ответы (1)
Покупатель должен заплатить в кассу 5 руб. У него купюры по 1, 5, 10, 50, 100, 500, 1000, 5000 и 10000 руб. Сколько купюр разного достоинства отдаст продавец, если он начинает платить с самых крупных купюр? (Программа желательно в СИ, через for)
Ответы (1)
Помогите объяснить задачу! Program String29; var otvet:String; i:integer; S0, S:String; C:char; begin Writeln ('Введите строкy S') ; readln (S) ; Writeln ('Введите строкy S0') ; readln (S0) ; Writeln ('Введите символ C') ; readln (C) ;
Ответы (1)
Program a2; var n, i, min, max, x:integer; begin Writeln ('Введите колицество человек в классе:') ; Readln (n) ; Writeln ('Введите рост 1 ученика:') ; readln (x) ; min:=x; max:=x; for i:=2 to n do begin Writeln ('Введите рост ', i,' ученика:') ;
Ответы (1)