1 Востаннє редагувалося Oleg Batron (22.11.2017 18:12:47)

Тема: Підрахунок кількості купюр

Задача: Часто-густо громадяни намагаються з'ясувати наскільки багатими є депутати. Дехто вірить, що матеріальні статки деяких депутатів є необмеженими.
Тож уявіть собі депутата, у якого є необмежена кількість купюр всіх номіналів(500,200,100,50,20,10,5,2 та 1 гривень).Він хоче придбати подарунюк, що коштує N гривень. Незважаючи на те, що наш геро-олігарх є нескінченно багатим, також він нескінченно скупий.Саме тому він хоче оплатити покупку готівкою без решти. Яка мінімальна кількість купюр йому знадобиться?

Потрібно ввести число N(ціну), а вивести кількість купюр.

Задачу написав, але не працює коректно. Допоможіть!

Код:

var n,p:integer;
begin
read(n);
p:=0;
while n<>0 do begin
if n>=500 then begin n:=n-500; p:=p+1; end;
if n>=200 then begin n:=n-200; p:=p+1; end;
if n>=100 then begin n:=n-100; p:=p+1; end;
if n>=50 then begin n:=n-50; p:=p+1; end;
if n>=20 then begin n:=n-20; p:=p+1; end;
if n>=10 then begin n:=n-10; p:=p+1; end;
if n>=5 then begin n:=n-5; p:=p+1; end;
if n>=2 then begin n:=n-2; p:=p+1; end;
if n=1 then begin n:=n-1; p:=p+1; end; end;
write(p);
end.
     

2

Re: Підрахунок кількості купюр

Ви після while операторні дужки мабуть забули (begin/end). І останній if у вас містить трохи неправильну умову. До того ж, дострокове переривання ітерації циклу не завадило б. Якщо не знаєте, що це таке, то отут почитайте: http://pascal.org.ua/loops

3

Re: Підрахунок кількості купюр

Замість "не працює" напишіть конкретно, що саме відбувається.
Ставте відступи в коді.

Завдання підвищеної складності

Ну і подумайте, як можна рядки 6-14 одним циклом зробити.

4

Re: Підрахунок кількості купюр

при введенні числа може показати неправильну відповідь. Наприклад при введенні 1225 показує 15,
а не 8. На рахунок одного циклу: можна використати case..of, але не знаю як :)

koala написав:

Замість "не працює" напишіть конкретно, що саме відбувається.

5

Re: Підрахунок кількості купюр

що за кейс оф?
тут найпростіше, то занести оті числа в масив, а потім пройтись по масиву циклом

Подякували: koala, leofun012

6 Востаннє редагувалося koala (22.11.2017 23:24:00)

Re: Підрахунок кількості купюр

Пройдіться по коду, як це зробить комп'ютер:

read(n);{ввели 1225}
p:=0;
while n<>0 do begin {n не дорівнює 0}
if n>=500 then begin n:=n-500; p:=p+1; end; {умова виконується, після цього стає n=725, p=1}
if n>=200 then begin n:=n-200; p:=p+1; end; {умова виконується... чекайте, а чого це віднімається 200 від 725, якщо ще можна відняти 500?}

Що ж до скорочення коду - то без відступів я цей код редагувати не буду, а відступи за вас ставити не буду принципово: якщо вони вам не потрібні, то мені цей код не потрібен і поготів. Якщо будете ставити відступи - додайте ще новий рядок після кожного begin і ;.

Подякували: 0xDADA11C7, Torbins, leofun013