Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача про монеты
Форум «Всё о Паскале» > 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.