3 / 3 / 0
Регистрация: 25.01.2012
Сообщений: 61
1

программа для поиска последовательности с минимальной функцией штрафа!

18.10.2012, 19:14. Показов 682. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Работаю с этой средой недавно, поэтому прошу помощи. подскажи принцип работы этой программки. И если не сложно где можно скачать Delphi на Win 7 64x ..

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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
unit MainForm;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Buttons, ComCtrls,math, ExtCtrls;
 
 
type
  TMain = class(TForm)
    GoProcess: TButton;
    StringGrid1: TStringGrid;
    Result: TEdit;
    Indicator: TLabel;
    Panel1: TPanel;
    Add: TBitBtn;
    Delete: TBitBtn;
    procedure GoProcessClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure AddClick(Sender: TObject);
    procedure DeleteClick(Sender: TObject);
  private
    { Private declarations }
  public
 
    { Public declarations }
  end;
type Demand = array[1..10] of integer;
var
  Main: TMain;
  iCountNumber:integer;
  DK,D,TK,C,Current,Best:Demand;
implementation
 
{$R *.dfm}
 
 
procedure Follow_Sequence;
var
i,j,k:integer;
begin
j:=iCountNumber;
i:=j-1;
while (Current[i]>Current[i+1]) do Dec(i);
while (Current[i]>=Current[j]) do Dec(j);
k:=Current[i];
Current[i]:=Current[j];
Current[j]:=k;
Inc(i);
j:=iCountNumber;
while (i<j) do
        begin
        k:=Current[i];
        Current[i]:=Current[j];
        Current[j]:=k;
        Inc(i);
        Dec(j);
        end;
end;
 
 
function Current_Penalty(New:Demand):integer;
var
full_time,summ_penalty,index:integer;
begin
full_time:=0;
summ_penalty:=0;
for index:=1 to iCountNumber do
        begin
        full_time:=full_time+TK[ New[index] ]+Max(DK[ New[1] ]-full_time,0);
        summ_penalty:=summ_penalty+C[ New[index] ] * Max(full_time - D[ New[index] ],0)* Max(full_time - D[ New[index] ],0);
        end;
Current_Penalty:=summ_penalty;
end;
 
function Fact(n_fact:integer):integer;
var
    i:byte;
begin
result:=1;
for i:=1 to n_fact do result:=result*i;
end;
 
procedure TMain.GoProcessClick(Sender: TObject);
var
New_Penalty,Optimum_penalty,index:integer;
begin
Indicator.Font.Color:=clRed;
Indicator.Caption:='&Подождите идут вычисления...';
Indicator.Caption:='&Готово :)';
iCountNumber:=StringGrid1.RowCount-1;
for index:=1 to iCountNumber do
        begin
        DK[index]:=StrToInt(StringGrid1.Cells[1,index]);
        TK[index]:=StrToInt(StringGrid1.Cells[2,index]);
         D[index]:=StrToInt(StringGrid1.Cells[3,index]);
         C[index]:=StrToInt(StringGrid1.Cells[4,index]);
        end;
for index:=1 to iCountNumber do Current[index]:=index;
Optimum_penalty:=2147483647;
for index:=1 to Fact(iCountNumber) do
     begin
      New_Penalty:=Current_Penalty(Current);
      if (New_Penalty<Optimum_penalty) then
       begin
        Optimum_penalty:=New_Penalty;
        Best:=Current;
       end;
     Follow_Sequence;
       end;
Result.Clear;
for index:=1 to iCountNumber do Result.Text:=Result.Text+IntToStr(Best[index])+' ';
Result.Text:='Порядок вычисления требований: '+Result.Text;
Result.Text:=Result.Text+'минимальный штраф='+IntToStr(Optimum_Penalty);
Indicator.Font.Color:=clBlue;
Indicator.Caption:='&Готово :)';
end;
 
procedure TMain.FormActivate(Sender: TObject);
begin
StringGrid1.Cells[0,1]:='1';
StringGrid1.Cells[0,0]:='Номер';
StringGrid1.Cells[1,0]:='Начальный момент времени';
StringGrid1.Cells[2,0]:='Время выполнения';
StringGrid1.Cells[3,0]:='Директивный срок';
StringGrid1.Cells[4,0]:='Степень важности';
end;
 
procedure TMain.AddClick(Sender: TObject);
begin
if StringGrid1.RowCount=10 then ADD.Enabled:=False;
if StringGrid1.RowCount<3 then Delete.Enabled:=True;
StringGrid1.Cells[0,StringGrid1.RowCount]:=IntToStr(StringGrid1.RowCount);
StringGrid1.RowCount:=StringGrid1.RowCount+1;
end;
 
procedure TMain.DeleteClick(Sender: TObject);
begin
if StringGrid1.RowCount=3 then Delete.Enabled:=False;
if StringGrid1.RowCount<13 then ADD.Enabled:=True; 
StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2012, 19:14
Ответы с готовыми решениями:

Программа поиска минимальной суммы последовательности
Заданные числа a1, a2, ..., a99. Получить min (a1 + a2, a2 ​​+ a3, ..., a98 + a99)

Метод штрафных функций с квадратичной функцией штрафа на основе метода Дэвидона-Флетчера-Пауела
Доброго времени суток. Возник вопрос по поводу вот такого метода: Метод штрафных функций с...

Программа расчёта штрафа
помогите сделать задание, а именно: &gt; Минимально разрешенная скорость на трассе 60км/ч, за...

Почему программа выводит вместо минимальной суммы последовательности последний элемент?
Программа выводит вместо минимальной суммы последовательности последний элемент. Подскажите...

6
3 / 3 / 0
Регистрация: 25.01.2012
Сообщений: 61
19.10.2012, 22:10  [ТС] 2
Ребята помогите пожалуйста разобраться,что то он не компилиться( не могу понять в чем ошибка
0
angstrom
19.10.2012, 22:14 3
Хоть скажи в какой строке и какая ошибка, а то по такому мусорному коду смотреть очень тяжко.
3 / 3 / 0
Регистрация: 25.01.2012
Сообщений: 61
19.10.2012, 23:40  [ТС] 4
извините ,код как бы не мой и писался давно, я как бы в делфи не очень силен, но он что то про класс мне говорит. ошибка связанная с классом(
0
angstrom
19.10.2012, 23:45 5
И что, не указывает в какой строке ошибка? Быть не может.
3 / 3 / 0
Регистрация: 25.01.2012
Сообщений: 61
20.10.2012, 14:57  [ТС] 6
ну попробуйте сами скомпилировать!
0
angstrom
20.10.2012, 15:05 7
Знаешь, мил человек, если ты ничего не хочешь сказать в какой строке ошибка, какая ошибка, а не что-то там про класс, то какой помощи ждёшь?
20.10.2012, 15:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2012, 15:05
Помогаю со студенческими работами здесь

Алгоритм для нахождения минимальной невозрастающей последовательности
Здравствуйте, помогите срочно реализовать алгоритм. Необходимо написать алгоритм для нахождения...

Программа поиска произведения последовательности чисел
Написать программу поиска произведения последовательности чисел, вводимых с клавиатуры,...

Программа поиска произведения последовательности чисел
надо написать программу поиска произведения последовательности чисел,вводимых с...

Написать программу с функцией для поиска экстремального (наибольшего или наименьшего) элемента массива
Написать программу с функцией для поиска экстремального (наибольшего или наименьшего) элемента...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru