Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача про монеты
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lodar'
задача такая: Cоставить программу определяющюю сдачу с рубля наименьшим количеством монет.
Используемые монеты: 1коп, 2коп, 3коп, 5коп, 10коп, 15коп, 20коп, 50коп
volvo
Стоп... Это - олимпиадная задача: Здесь - условия , поэтому тема пока закрыта... Решения олимпиадных задач с олимпиад, проходящих в настоящее время - не будет...

Добавлено через 12 мин.
P.S. Приводи свою попытку решения задачи, если она у тебя есть, поможем разобраться что не так.
Lodar'
 program Pr1;
const
Nmonet=8;
type
Tmassive=array[1..Nmonet] of real;
var
sdaha,price:real;
monet:Tmassive;
numb:integer;
function Podshet(const rnd:real):integer;
var
tmp:real;
i,count:integer;
begin
count:=0;
tmp:=rnd;
i:=1;
repeat
if tmp-monet[i]>=0 then
begin
tmp:=tmp-monet[i];
count:=count+1;
end
else
i:=i+1;

until tmp=0 ;
Podshet:=count;
end;
procedure fillMass;
begin
monet[1]:=0.5;
monet[2]:=0.2;
monet[3]:=0.15;
monet[4]:=0.1;
monet[5]:=0.05;
monet[6]:=0.03;
monet[7]:=0.02;
monet[8]:=0.01;
end;
begin
fillMass;
writeln('Vvedite LLEHY TOBAPA');
readln (price);
sdaha:=1-price;
numb:=Podshet(sdaha);
writeln(numb);
readln;
end.
amega
да че мучатся давать здачу нада по 1 коп, шоб побольше было lol.gif

все просто, береш масив от 1 до 8. будем щитать что а1 это 1 коп, а2 - 2 коп ....
берем здачу смотрим если она больше 50 коп то отнимаем 50 и а8:=а8+1 иначе смотрим если она меньше 50 то смотрим для 25 и так пока здача не стала 0.
на выходе получается масив
де каждый елемент соответствует количеству монет yes2.gif

хехе пока я набирал текст уже програмку напечатали)))
Lodar'
написанная мной прога не работает. Подскажите пожалуйста где что не так? и где что можно улучшить
volvo
Lodar', задача решается гораздо проще - по вышеописанному алгоритму:

program Pr1;
const
Nmonet=8;
type
Tmassive=array[1..Nmonet] of integer;
const
monet:Tmassive = (50, 20, 15, 10, 5, 3, 2, 1);

var
price: integer;
count, total: integer;
i: integer;
begin
writeln('Vvedite LLEHY TOBAPA');
readln (price);

i := 1;
while price > 0 do begin
count := 0;
while price >= count * monet[i] do inc(count);
dec(count);
if count > 0 then begin
writeln(count, ' coins of ', monet[i]);
dec(price, count * monet[i]);
inc(total, count);
end;
inc(i);
end;
writeln('total coins: ', total);
readln;
end.
amega
Цитата
Стоп... Это - олимпиадная задача: Здесь - условия

а как ты узнал что эта олимпиадная задача, если ты по таким сайтам сидиш то не мог бы дать ссылки на такие олимпиады rolleyes.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.