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

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

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

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

Задан массив М[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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru