Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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


Ответ
 
Опции темы
Старый 17.02.2020, 16:10   #1
Torrich
 
Регистрация: 22.09.2019
Сообщений: 8
По умолчанию размен монет - если в кассе есть купюры 10 руб, 100 руб, 50 руб, 1 руб. Нужно вывести все возможные способы размена

Имеется n рублей. Требуется разменять данную сумму, если в кассе есть купюры 10 руб, 100 руб, 50 руб, 1 руб. Нужно вывести все возможные способы размена
Torrich вне форума Ответить с цитированием
Старый 17.02.2020, 16:19   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,005
По умолчанию

Код:
n по 1 р.
n-10, 1 по 10, ...
...
оформляем в цикл(-ы) и ...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.02.2020, 16:22   #3
Torrich
 
Регистрация: 22.09.2019
Сообщений: 8
По умолчанию

можно пожалуйста подробнее
Torrich вне форума Ответить с цитированием
Старый 17.02.2020, 17:18   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,005
По умолчанию

как бы решал данную задачу руками?
я бы ПРИДУМАЛ алгоритм (порядок записи) возможных вариантов.
к примеру.
начать с мнимально возможных
Цитата:
n по 1 р.
постепенно добавлять более крупные (заменять мелочь)
Цитата:
n-10, 1 по 10, ...
и повторять, повторять, ...
Цитата:
оформляем в цикл(-ы) и ...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.02.2020, 17:27   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 2,242
По умолчанию

На Паскале лень ковыряться, сделал в Делфи, всё 1:1, только ввод-вывод перекинуть.
Если не включать бошку, то где-то так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i100,n100,i50,n50,i10,n10,n1,N,s100,s50,s10,s,j: integer ;
stro: string ;
begin
N := StrToInt (Edit1.Text) ;
j := 0 ;
n100:= N div 100 ;
n50 := N div 50 ;
n10 := N div 10 ;
for i100 := 0 to n100 do
  begin
    s100 := i100 * 100 ;
    for i50 := 0 to n50 do
      begin
        s50 := i50 * 50 ;
        s := s100 + s50 ;
        if s > N then Break ;
        for i10 := 0 to n10 do
           begin
             s10 := i10 * 10 ;
             s := s100 + s50 + s10 ;
             if s > N then Break ;
             Inc (j) ;
             n1 := N - s ;
             Memo1.Lines.Add( Format
               ('%3d -> %5d %5d %5d %5d',[j,i100,i50,i10,n1] ))
           end ;
      end ;
  end ;
end ;

Последний раз редактировалось digitalis; 17.02.2020 в 17:57.
digitalis вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО][C++] Вывести 100 первых натуральных чисел в столбик, если число делится нацело на 3 вывести вместо него fizz, если нацело на 5 — вывести bizz, если на 3 и на 5 — fizzbizz bylbyl9tor Помощь студентам 22 07.03.2019 22:37
есть неограниченное количество монет заданного номинала.Программа для размена заданной суммы наименьшим количеством монет (Паскаль xrystynka171 Помощь студентам 9 14.12.2013 14:50
Размен монет на С++ BvaKell Помощь студентам 8 06.06.2013 15:56
Все возможные способы создать чат gufon Работа с сетью в Delphi 3 10.06.2011 21:32
есть ячейки А, В, С. в ячейку С нужно вывести резултат С=А*В*0,1% А^ександр Microsoft Office Excel 1 18.02.2008 12:12


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS