Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 14:19   #1
fineleave
Пользователь
 
Аватар для fineleave
 
Регистрация: 12.01.2011
Сообщений: 14
Сообщение банкомат. выдача денег

Преподаватель задал задачу.

В банкомате есть копюры номиналом 5, 10, 25 $.
Сколькими способами можно и в каких комбинациях выдать сумму N $. Предусмотреть случай, если вариантов нет.

Входные данные: сумма USD, которую необходимо получить.
Исходные данные: варианты комбинации выплаты на сумму N.

например, сума 40 USD

5 10 25
------------
1 1 1
2 3 0
3 0 1
4 2 0
6 1 0
8 0 0

Никак не могу его решить. Помогите пожалуйста.

pascal

Последний раз редактировалось fineleave; 29.04.2011 в 14:25.
fineleave вне форума Ответить с цитированием
Старый 29.04.2011, 14:37   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

вложенные циклы от 0 до максимального числа купюр заданного достоинства необходимых для выдачи заданной суммы только этой купюрой.
проверка условия при данных значениях числа купюр получается требуемая сумма.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.04.2011, 14:38   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

в данном случае (если всего три жёстко заданных номинала)
задачу можно решить тупым перебором в трёх вложенных циклах.
примерно так:
Код:
var
  N, CountVariants,
  five, ten, quater : integer;
begin
  WriteLn('Введите сумму:');
  ReadLn(N);
  CountVariants ;= 0;
  for five:=0 to (N div 5) do
    for ten:=0 to ((N - (five * 5)) div 10) do
      for quater:=0 to ((N - (five * 5) - (ten * 10)) div 25) do
        if (five*5 + ten*10 + quater*25) = N then begin
          WriteLn('По пять:',five,'  по десять:' ten,'  по четветаку:', quater);
          Inc(CountVariants);
        end;

  if CountVariants=0 then Writeln('Таких вариантов нет!');
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.04.2011, 14:55   #4
fineleave
Пользователь
 
Аватар для fineleave
 
Регистрация: 12.01.2011
Сообщений: 14
По умолчанию

Спасибо очень. Чуть переправил. Но алгоритм работает на 100%. Спасибо!
fineleave вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема в коде (простой) (банкомат) extreme92 Общие вопросы C/C++ 1 13.03.2011 18:17
банкомат isxaker Общие вопросы C/C++ 2 09.12.2009 21:19
Выдача поисковика AndreyFreeman HTML и CSS 0 09.09.2009 18:10
Банкомат делаем.. Andrey_andrey Microsoft Office Access 1 24.05.2009 16:18