Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
студент _авт
2 / 2 / 0
Регистрация: 25.01.2012
Сообщений: 61
1

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

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

Работаю с этой средой недавно, поэтому прошу помощи. подскажи принцип работы этой программки. И если не сложно где можно скачать 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 19:14
Ответы с готовыми решениями:

Программа для поиска файлов
Помогите доработать или переписать часть кода. При щелчке первой кнопки...

Программа для поиска файлов на компе
Привет! Делаю курсак на делфи , нужно сделать программу , которая бы искала...

Необходима программа для поиска «седловой» точки.
Опыта работы в DELHI нет, прошу помощи тут. Необходима программа. Заранее...

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

Программа для поиска плагиата в текстовом файле (MsWord)
Требуется написать программу для поиска плагиата. Пример: Есть мой реферат в...

6
студент _авт
2 / 2 / 0
Регистрация: 25.01.2012
Сообщений: 61
19.10.2012, 22:10  [ТС] 2
Ребята помогите пожалуйста разобраться,что то он не компилиться( не могу понять в чем ошибка
0
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
19.10.2012, 22:14 3
Хоть скажи в какой строке и какая ошибка, а то по такому мусорному коду смотреть очень тяжко.
0
студент _авт
2 / 2 / 0
Регистрация: 25.01.2012
Сообщений: 61
19.10.2012, 23:40  [ТС] 4
извините ,код как бы не мой и писался давно, я как бы в делфи не очень силен, но он что то про класс мне говорит. ошибка связанная с классом(
0
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
19.10.2012, 23:45 5
И что, не указывает в какой строке ошибка? Быть не может.
0
студент _авт
2 / 2 / 0
Регистрация: 25.01.2012
Сообщений: 61
20.10.2012, 14:57  [ТС] 6
ну попробуйте сами скомпилировать!
0
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
20.10.2012, 15:05 7
Знаешь, мил человек, если ты ничего не хочешь сказать в какой строке ошибка, какая ошибка, а не что-то там про класс, то какой помощи ждёшь?
0
20.10.2012, 15:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2012, 15:05

программа с функцией
Помогите пожалуйста составить прогу в делфи7: вобщем нужно составить программу...

Как примерно должна выглядеть программа для нахождения суммы первых n членов заданной последовательности?
как примерно должна выглядеть программа для нахождения суммы первых n членов...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru