Консультация № 183114
10.05.2011, 23:49
0.00 руб.
0 23 1
Уважаемые эксперты!
Помогите реализовать вот такую вещь.
Я написал симплекс метод на делфи, и хочу чтобы каждая таблица
помешалась в компонет PageControl (в новую закладку).
Т.е получилось при решении симплекс методом 4 таблицы и должно быть 4 закладки,и в каждой своя таблица.
Заранее спасибо.С Уважением!!! С днем победы!!!
Вот программа.(https://rfpro.ru/d/5463.rar)

Обсуждение

давно
Мастер-Эксперт
425
4118
11.05.2011, 07:23
общий
А в чём конкретно у Вас затруднение? Не могли бы Вы более подробно описать свою проблему?
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
11.05.2011, 13:29
общий
Адресаты:
не получается поместить в компонент PageContro промежуточные таблицы симплекс метода..т.е в 1 загладке чтоб находилась 1 таблица,во второй,вторая и так далее
давно
Мастер-Эксперт
425
4118
11.05.2011, 14:10
общий
После того, как Вы поместили на форму компонент TPageControl, 4 раза делаете следующее:
- На компоненте формы PageControl1 щёлкаете правой кнопкой мышки,
- В появившемся меню выбираете пункт "New Page".
Таким образом у Вас создались четыре странички.
Далее, в дереве компонентов Вашего проекта (слева) щёлкаете по очереди на TabSheet1, TabSheet2, TabSheet3 и TabSheet4. При каждом щелчке у Вас на форме выделяется соответствующая страничка. Когда страничка выделена, Вы щелкаете мышкой в палитре компонентов таблицу и сразу же щёлкаете по выделеной страничке. Всё, таблица находится на нужной странице, на каждой странице - своя.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
11.05.2011, 17:00
общий
Адресаты:
это хорошо,если я знаю,сколько будет всего таблиц)
а сложность в том что я не знаю сколько)
я не могу это запрограммировать. чтобы закладки таблицы создавались динамически.
давно
Мастер-Эксперт
425
4118
11.05.2011, 19:25
общий
я не могу это запрограммировать. чтобы закладки таблицы создавались динамически.

У таблицы нет закладок. Подумайте ещё, как правильно описать Ваше затруднение.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
11.05.2011, 21:31
общий
Адресаты:
я не про таблицы говорю, а про компонент PageControl)
У меня есть метод симплекс, которые через таблицы.)
кооличество таблиц зависит от условия)
я просто не хочу выводить только первую таблицу и последнюю)
Мне хотелось чтобы и промежуточные таблицы ввыводились
давно
Мастер-Эксперт
425
4118
12.05.2011, 08:03
общий
Значит Вам нужно в процессе работы программы создавать новые закладки у компонента PageControl и Вы не знаете как это делать, я Вас правильно понял?
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
12.05.2011, 14:29
общий
Адресаты:
именно так)
создавать закладки, затем на этих закладках создавать Stringgrid и помещать туда значения.
давно
Профессионал
153662
1070
12.05.2011, 17:46
общий
12.05.2011, 17:52
Здравствуйте. Таким образом можно программно создавать страницы на TPageControl и на новой закладке уже Stringgrid
Код:

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
Tab: TTabSheet;
begin
i:= PageControl1.PageCount;

// Создаем страницу
Tab:= TTabSheet.Create(PageControl1);
with Tab do
begin
Visible:= True;
Caption:= 'Новая страница ' + IntToStr(i + 1);
PageControl:= PageControl1; // Назначаем Tab в Page Control
end;

// Создаем Stringgrid на новой странице
with TStringGrid.Create(Application) do
begin
Parent:= PageControl1.Pages[i]; // Указываем Stringgrid родительскую страницу
Name:= 'StringGrid' + IntToStr(i + 1);
Left:= 0;
Top:= 0;
ColCount:= 2; // Нужное количество столбцов
RowCount:= 2; // Нужное количество строк
Cells[0, 0]:= 'Нов таб' + IntToStr(i + 1); // Заполняем нужные ячейки данными
end;

PageControl1.ActivePage:= PageControl1.Pages[i]; // Переключаемся на новую страницу
end;
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
12.05.2011, 20:25
общий
Адресаты:
а поможете мне для моего примера?..а то у меня не получается...ни как не хочет заполнятся..постоянно ошибка вылазит.
Неизвестный
12.05.2011, 20:54
общий
Адресаты:
с одной закладкой норм создает, а как только я ставлю счетчик,сразу начинают ошибки вылазить
давно
Профессионал
153662
1070
12.05.2011, 21:05
общий
Дайте этот свой исходник, так будет быстрей. Полностью переделывать не успеваю.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
12.05.2011, 21:21
общий
Адресаты:
https://rfpro.ru/upload/5508
давно
Профессионал
153662
1070
12.05.2011, 21:33
общий
Не пойму принцип работы программы, как у Вас запускается расчёт?
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
12.05.2011, 21:53
общий
Извиняюсь с исходником (вот этот обновленный)
https://rfpro.ru/upload/5511

Сначала заполняем таблицу, потом в меню есть "Действие" и пункт "расчет"
давно
Профессионал
153662
1070
12.05.2011, 22:35
общий
18.05.2011, 22:19
Поправил Ваш код, проблема была в неправильных индексах [code h=300]procedure TForm1.N7Click(Sender: TObject);
var {op,} j, i:integer;
Tab: TTabSheet;
begin
i2:=0; t:=0; u:=0; y:=0; i1:=0;
{op:=PageControl1.PageCount;}
// отчищаем PageControl1
while PageControl1.PageCount <> 0 do
PageControl1.Pages[0].Destroy;
//запоминаем сколько <=,>= и где что стоит
for i:=1 to m do
begin
if (stringgrid2.cells[n,i]='>=') then
begin
u:=u+1;
l[i]:=-2;
end;
if (stringgrid2.cells[n,i]='<=') then
begin
u:=u+1;
l[i]:=-1;
end;
if (stringgrid2.cells[n,i]='=') then
l[i]:=i;
end;
//заполняю массив а и b
w:=0;
y:=0;
for j:=1 to m do
b[j]:=strtofloat(StringGrid2.Cells[n+1,j]);
for i:=1 to m do
begin
t:=0;
w:=w+1;
for j:=0 to n+u-1 do
begin
t:=t+1;
if (0<=j) and (j<n) then
a[i,t]:=strtofloat(StringGrid2.Cells[j,i]);
if (l[w]=-2)and(j>=n) then
begin
a[i,n+i]:=-1;
end;
if (l[w]=-1)and(j>=n)then
begin
a[i,n+i]:=1;
end;
if (l[w]=0)and(j>=n)then
a[i,n+i]:=0;
end;
end;
//строим первую симплек таблицу
stringgrid1.colcount:=n+m+2;
stringgrid1.rowcount:=m+2;
stringgrid1.fixedcols:=1;
stringgrid1.fixedrows:=1;
form2.stringgrid1.colcount:=n+m+2;
form2.stringgrid1.rowcount:=m+2;
form2.stringgrid1.fixedcols:=1;
form2.stringgrid1.fixedrows:=1;
t:=0; y:=1;

//1-ятаблица
stringgrid1.cells[0,0]:='Базис';
stringgrid1.cells[1,0]:='Свободные члены';
stringgrid1.cells[0,u+1]:='F';

//последняя таблица
form2.stringgrid1.cells[0,0]:='Базис';
form2.stringgrid1.cells[1,0]:='Свободные члены';
form2.stringgrid1.cells[0,u+1]:='F';

//1-я таблица
f[1]:=0;
for i:=2 to n+u+1 do
begin
if (i<=n+1) then
begin
f[i]:=strtofloat(stringgrid3.cells[t,1]);
if f[i]<0 then f[i]:=abs(f[i]);
if f[i]>=0 then f[i]:=-f[i];
t:=t+1;
end
else
f[i]:=0;
end;
for i:=1 to n+u+1 do
begin
y:=y+1;
stringgrid1.cells[y,0]:='X'+inttostr(i);
for j:=1 to m+1 do
begin
if(n+i<=n+u) then stringgrid1.cells[0,y-1]:='X'+inttostr(n+i);
if(n+i<=n+u) then form2.stringgrid1.cells[0,y-1]:='X'+inttostr(n+i);
if (j=m+1)then stringgrid1.cells[i,j]:=floattostr(f[i]);
if (i=1)and(j<=m) then
stringgrid1.cells[i,j]:=floattostr(b[j]);
if (i>=1)and(j<=m) then
stringgrid1.cells[i+1,j]:=floattostr(a[j,i]);
end;
end;
min:=f[1];
for i:=1 to n+u+1 do
begin
if (min>f[i]) then
begin
min:=f[i];
k:=i;
end;
end;
k:=k-1;
for i:=1 to m do
begin
if ((b[i]>0)and (a[i,k]>0)or(b[i]<0)and (a[i,k]<0)) then c[i]:=b[i]/a[i,k];
if ((b[i]=0) and (a[i,k]>0)) then c[i]:=0;
if (a[i,k]=0) then c[i]:=9999;
if ((b[i]=0) and (a[i,k]<0)) then c[i]:=9999;
if ((b[i]>0)and (a[i,k]<0)or(b[i]<0)and (a[i,k]>0)) then c[i]:=9999
end;
v:=0;
for i:=1 to m do
if(c[i]=0)or(c[i]=9999) then v:=v+1;


//цикл по построению новой симплекс таблици
r:=0;
while (min<0)and(r<=10)and(v<m) do
begin
r:=r+1;; i1:=i1+1;
// Создаем страницу
Tab:= TTabSheet.Create(PageControl1);
with Tab do
begin
Visible:= True;
Caption:= 'Таблица ' + IntToStr(i1);
PageControl:= PageControl1; // Назначаем Tab в Page Control
end;
{PageControl1.ActivePage:= PageControl1.Pages[i1 - 1];}
//строим массив оценочных отношений(с)
for i:=1 to m do
begin
if ((b[i]>0)and (a[i,k]>0)or(b[i]<0)and (a[i,k]<0)) then c[i]:=b[i]/a[i,k];
if ((b[i]=0) and (a[i,k]>0)) then c[i]:=0;
if (a[i,k]=0) then c[i]:=9999;
if ((b[i]=0) and (a[i,k]<0)) then c[i]:=9999;
if ((b[i]>0)and (a[i,k]<0)or(b[i]<0)and (a[i,k]>0)) then c[i]:=9999
end;
min:=c[1];
for i:=1 to m do
if (min>=c[i]) then
begin
min:=c[i];
p:=i;
end;
for i:=1 to m do
b1[i]:=b[i];
for i:=1 to m do
for j:=1 to n+u do
a1[i,j]:=a[i,j];
for i:=1 to n+u+1 do
f1[i]:=f[i];
//пересчитываем столбец свободных членов(массив b)
for i:=1 to m do
if (i=p) then
b[i]:=b1[i]/a[p,k]
else
b[i]:=b1[i]-b1[p]*a1[i,k]/a1[p,k];
//пересчитываем целевую функцию(массив F)
f[1]:=f1[1]-b1[p]*f1[k+1]/a1[p,k];
o:=2;
for i:=1 to n+u+1 do
begin
if(i<>k) then
f[o]:=f1[o]-a1[p,i]*f1[k+1]/a1[p,k]
else f[o]:=0;
o:=o+1;
end;
o:=0;
//Пересчитываем матрицу переменных (а)
for i:=1 to m do
for j:=1 to n+u do
begin
if ((i<>p)or(j<>k)) then
a[i,j]:=a1[i,j]-a1[p,j]*a1[i,k]/a1[p,k];
if (i=p) then
a[i,j]:=a1[i,j]/a1[p,k];
if (j=k)and(i<>p) then
a[i,j]:=0;
end;

//Формируем новую таблицу в стрингрид
y:=1;
with TStringGrid.Create(Application) do
begin
Parent:= PageControl1.Pages[i1 - 1]; // Указываем Stringgrid родительскую страницу
Name:= 'StringGrid' + IntToStr(i1);
Left:= 0; Top:= 0;
ColCount:= n+m+2; // Нужное количество столбцов
RowCount:= m+2; // Нужное количество строк
for i:=1 to n+u+1 do
begin
y:=y+1;
form2.stringgrid1.cells[y,0]:='X'+inttostr(i);
for j:=1 to m+1 do
begin
if(j=p) then
cells[0,j]:='X'+inttostr(k);
if (j=m+1)then cells[i,j]:=floattostr(f[i]);
if (i=1)and(j<=m) then
cells[i,j]:=floattostr(b[j]);
if (i>=1)and(j<=m) then
cells[i+1,j]:=floattostr(a[j,i]);
end;
end;
end;
PageControl1.ActivePage:= PageControl1.Pages[0]; // Переключаемся на новую страницу
{ for i:=1 to n+u+1 do
begin
y:=y+1;
form2.stringgrid1.cells[y,0]:='X'+inttostr(i);
for j:=1 to m+1 do
begin
if(j=p) then
form2.stringgrid1.cells[0,j]:='X'+inttostr(k);
if (j=m+1)then form2.stringgrid1.cells[i,j]:=floattostr(f[i]);
if (i=1)and(j<=m) then
form2.stringgrid1.cells[i,j]:=floattostr(b[j]);
if (i>=1)and(j<=m) then
form2.stringgrid1.cells[i+1,j]:=floattostr(a[j,i]);
end;
end;
}
//ищим min среди целевой функции
min:=f[1];
k:=0;
for i:=1 to n+u+1 do
begin
if (min>=f[i]) then
begin
min:=f[i];
k:=i;
end;
end;
k:=k-1; v:=0;
for i:=1 to m do
if(c[i]=0)or(c[i]=9999) then v:=v+1;
end;
s:='';
z:=0;
if (r<=10)and(v<m) then
for i:=1 to u do
begin
z:=1;
s:=s+floattostr(b[i]);
if i<u then s:=s+',';
end
else
if ((r=0)or(r=11))or(v=m)or(min<0) then
s1:='Функция не имеет оптимального значения';
if (z=1) then label1.caption:='{'+s+'}'
else
label1.caption:=s1;
end;[/code]
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Профессионал
153662
1070
12.05.2011, 22:39
общий
12.05.2011, 22:47
Собственно сам проект. Павел правильней делать локальные переменные для циклов, а не как у Вас было, Вы использовали глобальные переменные.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
12.05.2011, 22:54
общий
Адресаты:
а почему одна загладка создается?
я хотел чтоб было боле одной
давно
Профессионал
153662
1070
12.05.2011, 22:57
общий
Я пробовал на разных данных, всегда получается разное количество. У меня было от 1 до 5 закладок. Пора домой идти, смена закончилась, теперь только завтра.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
12.05.2011, 23:38
общий
Адресаты:
Спасибо большое!!!
давно
Профессионал
153662
1070
13.05.2011, 11:04
общий
Вы сами разобрались, или есть ещё проблема с количеством закладок? Оформлять ответ?
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
14.05.2011, 18:01
общий
Адресаты:
Да,разобрался,все получилось!!! Спасибо еще раз!!
давно
Профессионал
153662
1070
14.05.2011, 18:58
общий
это ответ
Здравствуйте, Павел Швецов!
Таким образом можно программно создавать страницы на TPageControl и на новой закладке уже Stringgrid. [code h=200]procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
Tab: TTabSheet;
begin
i:= PageControl1.PageCount;

// Создаем страницу
Tab:= TTabSheet.Create(PageControl1);
with Tab do
begin
Visible:= True;
Caption:= 'Новая страница ' + IntToStr(i + 1);
PageControl:= PageControl1; // Назначаем Tab в Page Control
end;

// Создаем Stringgrid на новой странице
with TStringGrid.Create(Application) do
begin
Parent:= PageControl1.Pages[i]; // Указываем Stringgrid родительскую страницу
Name:= 'StringGrid' + IntToStr(i + 1);
Left:= 0;
Top:= 0;
ColCount:= 2; // Нужное количество столбцов
RowCount:= 2; // Нужное количество строк
Cells[0, 0]:= 'Нов таб' + IntToStr(i + 1); // Заполняем нужные ячейки данными
end;

PageControl1.ActivePage:= PageControl1.Pages[i]; // Переключаемся на новую страницу
end;[/code] А вот исправленный Ваш код с автоматическим созданием закладок [code h=300]procedure TForm1.N7Click(Sender: TObject);
var j, i: integer;
Tab: TTabSheet;
begin
i2:=0; t:=0; u:=0; y:=0; i1:=0;
// отчищаем PageControl1
while PageControl1.PageCount <> 0 do
PageControl1.Pages[0].Destroy;
//запоминаем сколько <=,>= и где что стоит
for i:=1 to m do
begin
if (stringgrid2.cells[n,i]='>=') then
begin
u:=u+1;
l[i]:=-2;
end;
if (stringgrid2.cells[n,i]='<=') then
begin
u:=u+1;
l[i]:=-1;
end;
if (stringgrid2.cells[n,i]='=') then
l[i]:=i;
end;
//заполняю массив а и b
w:=0;
y:=0;
for j:=1 to m do
b[j]:=strtofloat(StringGrid2.Cells[n+1,j]);
for i:=1 to m do
begin
t:=0;
w:=w+1;
for j:=0 to n+u-1 do
begin
t:=t+1;
if (0<=j) and (j<n) then
a[i,t]:=strtofloat(StringGrid2.Cells[j,i]);
if (l[w]=-2)and(j>=n) then
begin
a[i,n+i]:=-1;
end;
if (l[w]=-1)and(j>=n)then
begin
a[i,n+i]:=1;
end;
if (l[w]=0)and(j>=n)then
a[i,n+i]:=0;
end;
end;
//строим первую симплек таблицу
stringgrid1.colcount:=n+m+2;
stringgrid1.rowcount:=m+2;
stringgrid1.fixedcols:=1;
stringgrid1.fixedrows:=1;
form2.stringgrid1.colcount:=n+m+2;
form2.stringgrid1.rowcount:=m+2;
form2.stringgrid1.fixedcols:=1;
form2.stringgrid1.fixedrows:=1;
t:=0; y:=1;

//1-ятаблица
stringgrid1.cells[0,0]:='Базис';
stringgrid1.cells[1,0]:='Свободные члены';
stringgrid1.cells[0,u+1]:='F';

//последняя таблица
form2.stringgrid1.cells[0,0]:='Базис';
form2.stringgrid1.cells[1,0]:='Свободные члены';
form2.stringgrid1.cells[0,u+1]:='F';

//1-я таблица
f[1]:=0;
for i:=2 to n+u+1 do
begin
if (i<=n+1) then
begin
f[i]:=strtofloat(stringgrid3.cells[t,1]);
if f[i]<0 then f[i]:=abs(f[i]);
if f[i]>=0 then f[i]:=-f[i];
t:=t+1;
end
else
f[i]:=0;
end;
for i:=1 to n+u+1 do
begin
y:=y+1;
stringgrid1.cells[y,0]:='X'+inttostr(i);
for j:=1 to m+1 do
begin
if(n+i<=n+u) then stringgrid1.cells[0,y-1]:='X'+inttostr(n+i);
if(n+i<=n+u) then form2.stringgrid1.cells[0,y-1]:='X'+inttostr(n+i);
if (j=m+1)then stringgrid1.cells[i,j]:=floattostr(f[i]);
if (i=1)and(j<=m) then
stringgrid1.cells[i,j]:=floattostr(b[j]);
if (i>=1)and(j<=m) then
stringgrid1.cells[i+1,j]:=floattostr(a[j,i]);
end;
end;
min:=f[1];
for i:=1 to n+u+1 do
begin
if (min>f[i]) then
begin
min:=f[i];
k:=i;
end;
end;
k:=k-1;
for i:=1 to m do
begin
if ((b[i]>0)and (a[i,k]>0)or(b[i]<0)and (a[i,k]<0)) then c[i]:=b[i]/a[i,k];
if ((b[i]=0) and (a[i,k]>0)) then c[i]:=0;
if (a[i,k]=0) then c[i]:=9999;
if ((b[i]=0) and (a[i,k]<0)) then c[i]:=9999;
if ((b[i]>0)and (a[i,k]<0)or(b[i]<0)and (a[i,k]>0)) then c[i]:=9999
end;
v:=0;
for i:=1 to m do
if(c[i]=0)or(c[i]=9999) then v:=v+1;

//цикл по построению новой симплекс таблици
r:=0;
while (min<0)and(r<=10)and(v<m) do
begin
r:=r+1;; i1:=i1+1;

// Создаем страницу
Tab:= TTabSheet.Create(PageControl1);
with Tab do
begin
Visible:= True;
Caption:= 'Таблица ' + IntToStr(i1);
PageControl:= PageControl1; // Назначаем Tab в Page Control
end;

//строим массив оценочных отношений(с)
for i:=1 to m do
begin
if ((b[i]>0)and (a[i,k]>0)or(b[i]<0)and (a[i,k]<0)) then c[i]:=b[i]/a[i,k];
if ((b[i]=0) and (a[i,k]>0)) then c[i]:=0;
if (a[i,k]=0) then c[i]:=9999;
if ((b[i]=0) and (a[i,k]<0)) then c[i]:=9999;
if ((b[i]>0)and (a[i,k]<0)or(b[i]<0)and (a[i,k]>0)) then c[i]:=9999
end;
min:=c[1];
for i:=1 to m do
if (min>=c[i]) then
begin
min:=c[i];
p:=i;
end;
for i:=1 to m do
b1[i]:=b[i];
for i:=1 to m do
for j:=1 to n+u do
a1[i,j]:=a[i,j];
for i:=1 to n+u+1 do
f1[i]:=f[i];
//пересчитываем столбец свободных членов(массив b)
for i:=1 to m do
if (i=p) then
b[i]:=b1[i]/a[p,k]
else
b[i]:=b1[i]-b1[p]*a1[i,k]/a1[p,k];
//пересчитываем целевую функцию(массив F)
f[1]:=f1[1]-b1[p]*f1[k+1]/a1[p,k];
o:=2;
for i:=1 to n+u+1 do
begin
if(i<>k) then
f[o]:=f1[o]-a1[p,i]*f1[k+1]/a1[p,k]
else f[o]:=0;
o:=o+1;
end;
o:=0;
//Пересчитываем матрицу переменных (а)
for i:=1 to m do
for j:=1 to n+u do
begin
if ((i<>p)or(j<>k)) then
a[i,j]:=a1[i,j]-a1[p,j]*a1[i,k]/a1[p,k];
if (i=p) then
a[i,j]:=a1[i,j]/a1[p,k];
if (j=k)and(i<>p) then
a[i,j]:=0;
end;

//Формируем новую таблицу в стрингрид
y:=1;
with TStringGrid.Create(Application) do
begin
Parent:= PageControl1.Pages[i1 - 1]; // Указываем Stringgrid родительскую страницу
Name:= 'StringGrid' + IntToStr(i1);
Left:= 0; Top:= 0;
ColCount:= n+m+2; // Нужное количество столбцов
RowCount:= m+2; // Нужное количество строк
for i:=1 to n+u+1 do
begin
y:=y+1;
form2.stringgrid1.cells[y,0]:='X'+inttostr(i);
for j:=1 to m+1 do
begin
if(j=p) then
cells[0,j]:='X'+inttostr(k);
if (j=m+1)then cells[i,j]:=floattostr(f[i]);
if (i=1)and(j<=m) then
cells[i,j]:=floattostr(b[j]);
if (i>=1)and(j<=m) then
cells[i+1,j]:=floattostr(a[j,i]);
end;
end;
end;
PageControl1.ActivePage:= PageControl1.Pages[0]; // Переключаемся на новую страницу

//ищем min среди целевой функции
min:=f[1];
k:=0;
for i:=1 to n+u+1 do
begin
if (min>=f[i]) then
begin
min:=f[i];
k:=i;
end;
end;
k:=k-1; v:=0;
for i:=1 to m do
if(c[i]=0)or(c[i]=9999) then v:=v+1;
end;
s:='';
z:=0;
if (r<=10)and(v<m) then
for i:=1 to u do
begin
z:=1;
s:=s+floattostr(b[i]);
if i<u then s:=s+',';
end
else
if ((r=0)or(r=11))or(v=m)or(min<0) then
s1:='Функция не имеет оптимального значения';
if (z=1) then label1.caption:='{'+s+'}'
else
label1.caption:=s1;
end;[/code] Правильней делать локальные переменные для циклов, а не как у Вас было, Вы использовали глобальные переменные. Вот весь Ваш проект.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Форма ответа