0 / 0 / 0
Регистрация: 09.09.2014
Сообщений: 27

Написать алгоритм выплаты заданной суммы S минимальным количеством купюp достоинством M(1), ..., M(N)

19.11.2014, 19:49. Показов 1718. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сделала вроде все правильно, но программа не работает, можете помочь найти ошибку?

Задан массив М[1:N] натуральных чисел, упорядоченный по неубыванию, т.е.: M[1]<=M[2]<=...<=M[N].
Написать алгоритм выплаты заданной суммы S минимальным количеством купюp достоинством M(1), ..., M(N).

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
const
 N = 13;
var
  Form2: TForm2;
  money: array[1..N] of cardinal;
implementation
 
uses UnitZadanie1;
 
{$R *.dfm}
procedure Uniterms;
begin
//Возможные купюры денег
money[1]:=1;
money[2]:=2;
money[3]:=5;
money[4]:=10;
money[5]:=20;
money[6]:=50;
money[7]:=100;
money[8]:=200;
money[9]:=500;
money[10]:=1000;
money[11]:=2000;
money[12]:=5000;
money[13]:=10000;
end;
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
Form2.Hide;
Form1.Show;
end;
 
procedure TForm2.CalculateButtonClick(Sender: TObject);
var
      i,k: byte;
    sum: integer;
 chislo: cardinal;
HowMuch: byte;
    ost,ost1: byte;
    st: string;
begin
Memo1.Clear;
 
howmuch:=0;
st:='';
ost:=0;
chislo:=StrToInt(Edit1.Text);
k:=1;
For k:=1 to N-1 do
 begin
  if (chislo>money[k]) and (chislo<money[k+1]) then
   begin
    ost:=chislo-money[k];
    Memo1.Lines.Add(IntToStr(chislo));
    Memo1.Lines.Add('1 - '+IntToSTr(money[k]));
    continue;
   end;
 end;
 
{if chislo > 10000 then
 begin
 ost:=(chislo mod 10000)
  if ost<>0 then
   begin
    HowMuch:=1;
    st:=st+IntToStr(HowMuch)+IntToStr(money[13]);
    ost1:=ost mod 1000;
   //else
     if ost1<>0
 
 end; }
Edit1.Clear;
Edit1.SetFocus;
end;
 
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;
 
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 case Key of
  '0'..'9':  ;
  #8:        ;
  #13: CalculateButton.Click;
  else Key:=Chr(0);
  end;
end;
 
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2014, 19:49
Ответы с готовыми решениями:

Написать алгоритм выплаты заданной суммы S минимальным количеством купюр
задан массив М натуральных чисел, упорядоченный по неубыванию, т.е. М&lt;=M&lt;=....&lt;=M. написать алгоритм выплаты заданной суммы S минимальным...

Способы выплаты суммы n с помощью монет достоинством 1,2,5,10 рублей
нужно составить програлу в делфи. в консольном окне. получить все способы выплаты суммы n с помощью монет достоинством 1,2,5,10...

Все способы выплаты суммы n с помощью купюр достоинством 1, 5, 10, 20 и 100 долларов
Здравствуйте помогите пожалуйста решить следующую задачу. Ввести с клавиатуры натуральное число n. Определить все способы выплаты суммы n...

4
0 / 0 / 0
Регистрация: 09.09.2014
Сообщений: 27
19.11.2014, 20:02  [ТС]
вот собственно и прога
Вложения
Тип файла: rar Лаб 4.rar (1.22 Мб, 24 просмотров)
0
0 / 0 / 0
Регистрация: 09.09.2014
Сообщений: 27
20.11.2014, 08:28  [ТС]
эхх неужели никто не знает? Господа программисты!
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
20.11.2014, 11:33
Цитата Сообщение от Bebebe Посмотреть сообщение
эхх неужели никто не знает? Господа программисты!
задачка далеко не так проста, как может показаться на первый взгляд.

цитирую, например, обсуждение c одного из форумов:
2Влад
Набор купюр далеко не всегда будет таким, как советский. К примеру у тебя есть купюры 25, 10 и 1. Сумму ты хочешь сложить 30. Твоим методом будет 25+1+1+1+1+1, т.е. 6 купюр. А оптимально 10+10+10, т.е. 3 купюры. Вообще эта штука решается либо рекурсией с бэктрекингом(рекурсивно перебираем все возможные комбинации, с оптимизацией, ессно, т.е. проверяем пока сумма меньше заданой и количество купюр меньше найденного ранее минимального)
либо с помощью динамики(строим масив, в котором индекс отвечает значению суммы, а значение количеству купюр). К примеру, для купюр 1, 2, 5 массив будет иметь вид:
1 1 2 2 1 2 2 3 ...
Сначала заполняем его как 1 2 3 4 5...(при условии, что есть купюра достоинством 1). Потом добавляем остальные купюры. К примеру, добавив "2", получим
1 1 2 3 3 4...
Т. е., от элемента с индексом (i) отнимаем значение (i div x), где (х) - значение купюры, которую мы добавляем в набор(это если (i) нацело не делится на (x)), если делится, то тупо пишем туда (i/x). Если а[i]<(i - (i div x)), то ничего менять не надо. В общем, что то такое, точно не помню. Дельфи не знаю, так что писать ниче не буду =)

ЗЫ Вроде должно работать =) Я когдато ее рекурсией решал, но так должно бы тоже заработать.

описание решения есть на Алголисте (см. algolist ). Найте легко. погуглите
Задан массив натуральных чисел, упорядоченный по неубыванию, алгоритм выплаты заданной суммы S минимальным количеством купюp
первым в поиской выдаче и будет искомое..

Но, скажу честно, я в представленном на алголисте алгоритме решения не до конца разобрался, я бы через рекурсию пытался решить...
0
0 / 0 / 0
Регистрация: 09.09.2014
Сообщений: 27
28.11.2014, 19:06  [ТС]
help help!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2014, 19:06
Помогаю со студенческими работами здесь

Определить число способов выплаты суммы n руб. с помощью монет достоинством 1, 2, 5 рублей
22. Дано натуральное число n(n&lt;100). a) Определить число способов выплаты суммы n руб. с помощью монет достоинством 1,2,5 рублей и...

Циклы: определить все способы выплаты суммы n с помощью купюр достоинством 1, 5, 10, 20 и 100 условных единиц
Ввести с клавиатуры натуральное число n. Определить все способы выплаты суммы n с помощью купюр достоинством 1, 5, 10, 20 и 100 условных...

Реализовать выдачу заданной суммы денег минимальным количеством купюр
В массиве К в порядке уменьшения представлены денежные знаки разной стоимости. Реализовать выдачу в этой системе заданной суммы m...

Реализовать выдачу в этой системе заданной суммы m минимальным количеством купюр
В массиве K (n) в порядке убывания представлены денежные знаки разного достоинства. Реализовать выдачу в этой системе заданной суммы m...

Написать жадный алгоритм формирования сдачи с 1 рубля минимальным количеством монет при покупки товара ценой X копеек
Раньше были монеты достоинством 1, 2, 3, 5, 10, 15, 20 и 50 копеек. Написать жадный алгоритм формирования сдачи с 1 рубля минимальным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
Состояние гонки в C#: подводные камни многопоточного программировани­я
UnmanagedCoder 20.03.2025
Что такое состояние гонки? Это ситуация, когда результат программы непредсказуемо меняется в зависимости от порядка выполнения потоков. Проще говоря, два или более потока пытаются одновременно. . .
Next.js для разработки React: преимущества серверного рендеринга
Reangularity 20.03.2025
Next. js решает классическую проблему React-приложений: медленную первоначальную загрузку и плохую индексацию поисковиками. Вместо того чтобы заставлять браузер пользователя выполнять всю работу по. . .
JUnit или TestNG: Выбираем Java-фреймворк для тестирования
Javaican 20.03.2025
История тестовых фреймворков в Java началась в конце 90-х, когда Кент Бек и Эрих Гамма разработали JUnit - инструмент, который перевернул представление разработчиков о модульном тестировании. JUnit. . .
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru