Решение задачи о смесях симплексным методом

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    296,67 Кб
  • Опубликовано:
    2012-05-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Решение задачи о смесях симплексным методом

Содержание

Введение

.        Симплекс-метод

.        Линейное программирование

.        Общая характеристика задачи о смесях

.        Аналитическое решение

.        Математическая постановка задачи

.        Разработка основных алгоритмов решения задачи. Решение задачи в среде визуального программирования Delphi

.        Проектирование интерфейса пользователя. Построение графа состояний интерфейса

.        Разработка форм ввода-вывода информации

.        Контрольный пример

.        Заключение

.        Исходный код

Список использованной литературы

Введение


В различных отраслях народного хозяйства возникает проблема составления таких рабочих смесей на основе исходных материалов, которые обеспечивали бы получение конечного продукта, обладающего определенными свойствами. К этой группе задач относятся задачи о выборе диеты, составлении кормового рациона в животноводстве, шихт в металлургии, горючих и смазочных смесей в нефтеперерабатывающей промышленности, смесей для получения бетона в строительстве и т. д.

Высокий уровень затрат на исходные сырьевые материалы и необходимость повышения эффективности производства выдвигает на первый план следующую задачу: получить продукцию с заданными свойствами при наименьших затратах на исходные сырьевые материалы.

 

1. Симплекс-метод


Симплекс-метод - алгоритм решения оптимизационной <#"552543.files/image001.gif">400


Крекинг-бензин

250


Бензин прямой перегонки

300


Изопентат

250


Цена бензина (рублей за 1 тыс.л.)

120

100

150

5. Математическая постановка задачи


Составим математическую модель задачи. Обозначим через t1 количество бензина А, через t2 количество бензина В, через t3 количество бензина С. Тогда, целевая функция будет:

L=y1t1+ y2t2+ y3t3=120t1+100t2+150t3 →max

Система ограничений:


Приведем систему ограничений к виду основной задачи линейного программирования (введем новые переменные t4 , t5 ,t6 ,t7, которые входят в целевую функцию с нулевыми коэффициентами):

Выберем t1 , t2 ,t3 свободными переменными, а t4 , t5 ,t6 ,t7 - базисными и приведем к стандартному виду для решения с помощью симплекс-таблицы:

L=0-(-120t1-100t2-150t3)

Составим симплекс-таблицу.

Это решение опорное, т.к. все свободные члены положительны.

Т. к. все коэффициенты в целевой функции отрицательные, то можно взять любой столбец разрешающим (пусть t1). Выберем в качестве разрешающего элемента тот, для которого отношение к нему свободного члена будет минимально (это t7)

Таблица 2

 

b

t1

t2

t3

 

L

0

 

-120

 

-100

 

-150

 



 

6000

 

60

 

60

 

180


t4

400

 

2

 

3

 

 

400/2=200


 

-100

 

-1

 

-1

 

-3


t5

250

 

3

 

1

 

2

 

250/3=83,3


 

-150

 

-1,5

 

-1,5

 

-4,5


t6

350

 

5

 

2

 

1

 

350/5=70


 

-250

 

-2,5


-2,5

 

-7,5


t7

100

 

2


1

 

3

 

100/2=50


 

50

 

0,5

 

0,5

 

1,5



Далее меняем t2 и t1 .

Таблица 3

 

b

t7

t2

t3


L

 

60

 

-40

 

30

 



 

4000

 

40

 

80

 

120


t4

300

 

-1

 

2

 

-1

 

300/2=150


 

-200

 

-2

 

-4

 

-6


t5

100

 

-1,5

 

-0,5

 

-2,5

 



 

50

 

0,5

 

1

 

-4,5


t6

50

 

-2,5

 

-0,5

 

-6,5

 



 

50

 

0,5

 

1


-7,5


t1

50

 

0,5

0,5


1,5

 

50/0,5=100


 

100

 

1

 

2

 

1,5



Таблица 3

 

b

t7

t1

t3

L

10000

 

100

 

80

 

150

 


 

 

 

 

 

 

 

 

t4

100

 

-3

 

-4

 

-7

 


 

 

 

 

 

 

 

 

t5

150

 

-1

 

1

 

-1

 


 

 

 

 

 

 

 

 

t6

 

-2

 

1

 

-5

 


 

 

 

 

 

 

 

 

t2

100

 

1

 

2

 

3

 


 

 

 

 

 

 

 

 


Т.к. коэффициенты при переменных в целевой функции положительны, следовательно, это оптимальное решение.

Таким образом, t1 = t3 =0; t2=100; L=10000.

Т.е. для получения максимальной прибыли следует производить только бензин В (100 тыс. л.), при этом выручка составит 10000 руб.

ОТВЕТ: для получения максимальной прибыли следует производить только бензин В (100 тыс. л.), при этом выручка составит 10000 руб.

6. Разработка основных алгоритмов решения задачи. Решение задачи в среде визуального программирования Delphi


Анализ процесса обработки информации и выбор структур данных для ее хранения

Для хранения первичных данных используются целочисленные переменные Count , Count2 и компонент StringGrid.

Переменные целочисленного типа tmp и k они указывают на количество столбцов и строк.

Для вычисления минимального значения столбца и минимального значения строки используются переменные целочисленного типа MinC, MinR.

Переменная логического типа Reshil используется для подсчёта и вывода пользователю максимальной прибыли, которую можно будет получить при реализации найденного оптимального плана.

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

Также для хранения промежуточных значений максимальной прибыли используются переменные вещественного типа zna4TMP, zna4TMP2.

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

Переменная вещественного типа zna4 используется для нахождения максимального значения прибыли во время промежуточных расчетов. Для хранения коэффициента X при максимальном значении прибыли используется переменная целочисленного типа a.

Переменная Boo логического типа хранит итоговый результат-максимальная прибыль.

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

7. Проектирование интерфейса пользователя. Построение графа состояний интерфейса




       


 

 

 














Рисунок 1- граф состояния интерфейса

8. Разработка форм ввода-вывода информации





















Рисунок 2 - Form1

1.     компонент edit1 - ввод наименования ресурса;

2.      компонент edit2 - ввод количества литров;

.        компонент BitBtn1-добавляет новый ресурс в таблицу ;

.        компонент BitBtn2 - изменяет ресурс добавленный в таблицу;

.        компонент BitBtn3 -удаляет ресурс из таблицы;

.        компонент StringGrid1 - таблица для ввода-вывода данных;

.        компонент RadioButton1-компонент выбирает максимальную прибыль предприятия;

.        компонент RadioButton2-компонент выбирает минимальные затраты предприятия;

.        компонент BitBtn4- выход из программы;

.        компонент BitBtn5- очищает таблицу ввода данных;

.        компонент BitBtn6- переход на Form2;

.        компонент BitBtn7-справка;

 

 

 

 








Рисунок 3 - Form2

 

1.     компонент edit1 - ввод наименования ресурса;

2.      компонент edit2 - ввод стоимости ресурса за одну единицу товара;

.        компонент BitBtn1-добавляет новый ресурс в таблицу ;

.        компонент BitBtn2 - изменяет ресурс добавленный в таблицу;

.        компонент BitBtn3 -удаляет ресурс из таблицы;

.        компонент StringGrid1 - таблица для ввода-вывода данных;

.        компонент BitBtn4-выход из программы;

.        компонент BitBtn6-возвращает пользователя на Form1;

.        компонент BitBtn7-переход на Form3;

 

 












Рисунок 4 - Form3

1.     компонент StringGrid1 - таблица вывода результата;

2.      компонент BitBtn1-выход из программы;

.        компонент BitBtn2-очищает таблицу вывода результата;

.        компонент BitBtn3-возвращает пользователя на Form2;

симплекс метод delphi

9. Контрольный пример




10. Заключение

В процессе написания данной курсовой работы были углублены знания в таких дисциплинах, как: “Основы алгоритмизации и программирования”, “Основы программирования в среде программирования Delphi” и “Математические методы”. Также в процессе работы над курсовой работой были изучены множественные информационные источники разной предметной направленности в таких сферах, как “Объектно-ориентированное программирование”, “Алгоритмизация”, “Программирование в среде Delphi”, “Динамическое программирование” и “Экономической оптимизации”.

В результате данной работы были достигнуты поставленные цели и задачи, а именно:

-      изучен теоретический материал решения задачи линейного программирования симплексным методом для нахождения оптимального плана;

-       разработан алгоритм решения данной задачи о смесях для нахождения максимальной прибыли или минимальных затрат предприятия;

-       автоматизирован процесс решения поставленной задачи симплексным методом на нахождения максимальной прибыли предприятия;

-       разработана программа для решения поставленной задачи симплексным методом для нахождения максимальной прибыли и минимальных затрат предприятия;

Разработанный программный продукт не может использоваться в реальной сфере экономической оптимизации, а также его не могут применять, как студенты изучающие дисциплину “Математические методы”, так и преподаватели преподающие её. Студентам программный продукт не поможет решить сложные задачи, провести самоконтроль или разобраться в решении задач такого типа благодаря тому, что в процессе работы программы пользователю выводится процесс нахождения оптимального плана распределения инвестиций между предприятиями. Преподавателям же он не поможет облегчить процесс проверки решений подобных задач у студентов.

 

11. Исходный код

Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls, Buttons, ComCtrls, Menus;= class(TForm): TGroupBox;: TEdit;: TEdit;: TBitBtn;: TBitBtn;: TLabel;: TLabel;: TStringGrid;: TLabel;: TGroupBox;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TGroupBox;: TBitBtn;: TBitBtn;: TBitBtn;: TEdit;: TLabel;: TEdit;: TLabel;: TStringGrid;: TLabel;: TLabel;: TGroupBox;: TStringGrid;: TLabel;: TGroupBox;: TStringGrid;: TBitBtn;: TBitBtn;: TGroupBox;: TMemo;: TRichEdit;: TButton;: TButton;: TButton;: TRadioButton;: TRadioButton;BitBtn6Click(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);BitBtn1Click(Sender: TObject);StringGrid1Click(Sender: TObject);BitBtn7Click(Sender: TObject);FormCreate(Sender: TObject);BitBtn2Click(Sender: TObject);Edit2KeyPress(Sender: TObject; var Key: Char);BitBtn4Click(Sender: TObject);BitBtn5Click(Sender: TObject);Edit3KeyPress(Sender: TObject; var Key: Char);Edit4KeyPress(Sender: TObject; var Key: Char);BitBtn3Click(Sender: TObject);BitBtn9Click(Sender: TObject);BitBtn8Click(Sender: TObject);StringGrid2Click(Sender: TObject);StringGrid3KeyPress(Sender: TObject; var Key: Char);BitBtn11Click(Sender: TObject);BitBtn10Click(Sender: TObject);Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;

{$R *.dfm}Otchistka();.stringgrid1.RowCount :=2;.stringgrid1.Cells [0,form1.stringgrid1.RowCount - 1] := '';.stringgrid1.Cells [1,form1.stringgrid1.RowCount - 1] := '';.stringgrid2.RowCount :=2;.stringgrid2.Cells [0,form1.stringgrid2.RowCount - 1] := '';.stringgrid2.Cells [1,form1.stringgrid2.RowCount - 1] := '';.stringgrid3.RowCount :=2;.stringgrid2.Cells [0,form1.stringgrid2.RowCount - 1] := '';.stringgrid2.Cells [1,form1.stringgrid2.RowCount - 1] := '';.stringgrid3.ColCount :=2;.stringgrid3.RowCount :=2;;Otvet();count,count2:integer;

boo:boolean;.Memo1.Lines.Add('Выгодно производить/использовать следующую продукцию:');

for count:=1 to form1.StringGrid4.RowCount -1 docount2:=0 to form1.StringGrid2.RowCount -1 doform1.StringGrid4.Cells[0,count] = form1.StringGrid2.Cells[0,count2] then.Memo1.Lines.Add (form1.StringGrid4.Cells[0,count]+ ' в количестве ' + form1.StringGrid4.Cells[1,count]+' ед.');;:=false;count:=1 to form1.StringGrid4.RowCount -1 docount2:=0 to form1.StringGrid1.RowCount -1 doform1.StringGrid4.Cells[0,count] = form1.StringGrid1.Cells[0,count2] then:=true;;;boo then.Memo1.Lines.Add('');

form1.Memo1.Lines.Add('При этом будут такие излишки ресурсов:');

for count:=1 to form1.StringGrid4.RowCount -1 docount2:=0 to form1.StringGrid1.RowCount -1 doform1.StringGrid4.Cells[0,count] = form1.StringGrid1.Cells[0,count2] then.Memo1.Lines.Add (form1.StringGrid4.Cells[0,count]+ ' в количестве ' + form1.StringGrid4.Cells[1,count]+' ед.');;;.Memo1.Lines.Add('');form1.RadioButton2.Checked then.Memo1.Lines.Add('Затраты при таком плане использования составят ' + floattostr((-1)*strtofloat(form1.StringGrid4.Cells[1,1]))+' у.е.').Memo1.Lines.Add('Прибыль при таком плане производства составит ' + form1.StringGrid4.Cells[1,1]+' у.е.');;zapolni();Count:integer;.StringGrid3.Cells[1,0]:='ОФР';Count:=1 to form1.stringgrid1.RowCount-1 do.StringGrid3.RowCount :=form1.StringGrid3.RowCount +1;.StringGrid3.Cells[0,Count+1]:=form1.StringGrid1.Cells[0,Count];;.StringGrid3.Cells[0,1]:='Прибыль';.StringGrid3.Cells[1,1]:='0';Count:=1 to form1.stringgrid2.RowCount-1 do.StringGrid3.ColCount := form1.StringGrid3.ColCount+1;.StringGrid3.Cells[Count+1,0]:=form1.StringGrid2.Cells[0,Count];;Count:=1 to form1.StringGrid1.RowCount -1 do.StringGrid3.Cells[1,Count+1]:=form1.StringGrid1.Cells[1,Count];Count:=1 to form1.StringGrid2.RowCount -1 do.StringGrid3.Cells[Count+1,1]:=form1.StringGrid2.Cells[1,Count];;ZapEnd();Count,count2,tmp,k:integer;:=1;form1.RadioButton2.Checked then k:=-1;.StringGrid4.RowCount :=form1.StringGrid3.RowCount;.StringGrid4.ColCount := form1.StringGrid3.ColCount;count:=0 to form1.StringGrid3.RowCount-1 docount2:=0 to form1.StringGrid3.ColCount-1 do.StringGrid4.Cells [Count2,count] :=form1.StringGrid3.Cells [Count2,count];count:=1 to form1.StringGrid3.RowCount-1 docount2:=1 to form1.StringGrid3.ColCount-1 do.StringGrid4.Cells [Count2,count] :=floattostr(k*strtofloat(form1.StringGrid3.Cells [Count2,count]));count:=1 to form1.StringGrid4.ColCount -1 do.StringGrid4.Cells[count,1]:=floattostr(strtofloat(form1.StringGrid4.Cells[count,1])*(-1));:=form1.StringGrid4.ColCount;.StringGrid4.ColCount := tmp + form1.StringGrid3.RowCount -2;Count:=2 to form1.StringGrid3.RowCount -1 do.StringGrid4.Cells [count+tmp-2,0]:=form1.StringGrid3.Cells [0,count];;count:=tmp to form1.StringGrid4.ColCount-1 docount2:=1 to form1.StringGrid4.RowCount - 1 doform1.StringGrid4.Cells [count,0]= form1.StringGrid4.Cells [0,count2] then.StringGrid4.Cells [count,count2]:='1'.StringGrid4.Cells [count,count2]:='0';;Proverka():boolean;Count,Count2:integer;:boolean;:=true;.StringGrid3.Cells [1,1]:='0';Count:=1 to form1.StringGrid3.RowCount -1 doCount2:=1 to form1.StringGrid3.ColCount -1 doform1.StringGrid3.Cells [Count2,Count]='' then:=false;.Label5.Caption :='Ошибка заполнения таблицы. Найдено пустое поле!';

end;

proverka:=boo;;SimplexMetod(n:boolean);Count,Count2,MinC,MinR:integer;,zna4,zna4TMP,zna4TMP2:double;,reshil:boolean;:=false;:=false;count:=1 to form1.StringGrid4.ColCount -1 dostrtofloat(form1.StringGrid4.Cells [count,1])<0 then boo:=true;boo then:=2;:=strtofloat(form1.StringGrid4.Cells [2,1]);count:=2 to form1.StringGrid4.ColCount -1 dostrtofloat(form1.StringGrid4.Cells [count,1])<zna4 then:=strtofloat(form1.StringGrid4.Cells [count,1]);:=count;;TMP:=strtofloat(form1.StringGrid4.Cells [1,2]);TMP2:=strtofloat(form1.StringGrid4.Cells [MinC,2]);:=zna4TMP/zna4TMP2;:=2;Count:=2 to form1.StringGrid4.RowCount -1 doTMP:=strtofloat(form1.StringGrid4.Cells [1,count]);TMP2:=strtofloat(form1.StringGrid4.Cells [MinC,count]);zna4TMP2>0 then:=zna4TMP/zna4TMP2;zna4<MinEl then:=zna4;:=Count;;;;:=strtofloat(form1.StringGrid4.Cells[MinC,MinR]);count:=1 to form1.StringGrid4.ColCount -1 do.StringGrid4.Cells[count,MinR]:=floattostr(strtofloat(form1.StringGrid4.Cells[count,MinR])/MinEl);count:=1 to form1.StringGrid4.ColCount -1 doCount2:=1 to form1.StringGrid4.RowCount -1 do(count<>MinC)and(count2<>MinR) then.StringGrid4.Cells [count,count2]:=floattostr(strtofloat(form1.StringGrid4.Cells [count,count2])-strtofloat(form1.StringGrid4.Cells [count,MinR])*strtofloat(form1.StringGrid4.Cells [MinC,count2]));.StringGrid4.Cells[0,MinR]:=form1.StringGrid4.Cells[MinC,0];count:=1 to form1.StringGrid4.RowCount - 1 doform1.StringGrid4.Cells [MinC,0]= form1.StringGrid4.Cells [0,count] then.StringGrid4.Cells [MinC,count]:='1'.StringGrid4.Cells [MinC,count]:='0';.Label5.Caption :='Решение найдено!!!';:=true;;reshil or n;;DvSimplexMetod(n:boolean);Count,Count2,MinC,MinR:integer;,zna4,zna4TMP,zna4TMP2:double;,reshil,dv:boolean;:=false;:=form1.RadioButton2.Checked;:=false;count:=2 to form1.StringGrid4.ColCount -1 dostrtofloat(form1.StringGrid4.Cells [count,1])<0 then boo:=true;count:=2 to form1.StringGrid4.RowCount -1 dostrtofloat(form1.StringGrid4.Cells [1,count])<0 then boo:=true;boo then:=2;:=strtofloat(form1.StringGrid4.Cells [1,2]);count:=2 to form1.StringGrid4.RowCount -1 dostrtofloat(form1.StringGrid4.Cells [1,count])<zna4 then:=strtofloat(form1.StringGrid4.Cells [1,count]);:=count;;TMP:=strtofloat(form1.StringGrid4.Cells [2,1]);TMP2:=strtofloat(form1.StringGrid4.Cells [2,MinR]);:=zna4TMP/zna4TMP2;:=2;Count:=2 to form1.StringGrid4.ColCount -1 doTMP:=strtofloat(form1.StringGrid4.Cells [count,1]);TMP2:=strtofloat(form1.StringGrid4.Cells [count,MinR]);(zna4TMP>0) and (zna4TMP2<0) then:=zna4TMP/zna4TMP2;abs(zna4)<abs(MinEl) then:=zna4;:=Count;;;;:=strtofloat(form1.StringGrid4.Cells[MinC,MinR]);count:=1 to form1.StringGrid4.ColCount -1 do.StringGrid4.Cells[count,MinR]:=floattostr(strtofloat(form1.StringGrid4.Cells[count,MinR])/MinEl);count:=1 to form1.StringGrid4.ColCount -1 doCount2:=1 to form1.StringGrid4.RowCount -1 do(count<>MinC)and(count2<>MinR) then.StringGrid4.Cells [count,count2]:=floattostr(strtofloat(form1.StringGrid4.Cells [count,count2])-strtofloat(form1.StringGrid4.Cells [count,MinR])*strtofloat(form1.StringGrid4.Cells [MinC,count2]));.StringGrid4.Cells[0,MinR]:=form1.StringGrid4.Cells[MinC,0];count:=1 to form1.StringGrid4.RowCount - 1 doform1.StringGrid4.Cells [MinC,0]= form1.StringGrid4.Cells [0,count] then.StringGrid4.Cells [MinC,count]:='1'.StringGrid4.Cells [MinC,count]:='0';.Label5.Caption :='Решение найдено!!!';:=true;;reshil or n;;TForm1.BitBtn6Click(Sender: TObject);.Close;;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13: edit2.SetFocus ;

'a'..'z': ;

'A'..'Z': ;

'а'..'я': ;

'А'..'Я': ;

'0'..'9': ;key:=#0;;;TForm1.BitBtn1Click(Sender: TObject);Count:integer;:boolean;:=true;(edit1.Text ='')or(edit2.Text ='') then:=false;.Caption :='Заполните все поля ввода.';;Count := 1 to stringgrid1.RowCount do(edit1.Text = stringgrid1.Cells [0,Count]) then:=false;;boo then(stringgrid1.RowCount = 2) and (stringgrid1.Cells[0,1]='') then.RowCount := stringgrid1.RowCount.RowCount := stringgrid1.RowCount + 1;.Cells [0,stringgrid1.RowCount - 1] := edit1.Text;.Cells [1,stringgrid1.RowCount - 1] := edit2.Text;.Caption :='Ресурс добавлен!';.SetFocus();.Caption :='Такой ресурс уже есть';;TForm1.StringGrid1Click(Sender: TObject);i :integer;:=stringgrid1.Row;.Text := stringgrid1.Cells [0,i];.Text := stringgrid1.Cells [1,i];.Caption := '';;TForm1.BitBtn7Click(Sender: TObject);Count,i:integer;:boolean;:=true;Count := 1 to stringgrid1.RowCount do(edit1.Text = stringgrid1.Cells [0,Count]) then:=Count;:=false;;;boo then

label5.Caption :='Такого ресурса нет в списке!';

end.Cells [0,i] := edit1.Text;.Cells [1,i] := edit2.Text;.Caption :='Ресурс изменен.';;;TForm1.FormCreate(Sender: TObject);.Cells [0,0]:='Наименование';.Cells [1,0]:='ОФР';.Cells [0,0]:='Наименование';.Cells [1,0]:='Стоимость';;TForm1.BitBtn2Click(Sender: TObject);Count,i:integer;:boolean;:=true;Count := 1 to stringgrid1.RowCount do(edit1.Text = stringgrid1.Cells [0,Count]) then:=Count;:=false;;;boo then

label5.Caption :='Такого ресурса нет в списке!';

end.Rows[i].Clear ;Count := i to stringgrid1.RowCount-1 do.Cells [0,Count]:=stringgrid1.Cells [0,Count+1];.Cells [1,Count]:=stringgrid1.Cells [1,Count+1];;.RowCount := stringgrid1.RowCount -1;.Caption :='Ресурс стерт.';;;TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13: bitbtn1.SetFocus;

'0'..'9': ;

#110:;

#46:;key:=#0;;;TForm1.BitBtn4Click(Sender: TObject);.Caption :='';groupbox5.Visible = true then.Visible := false;.Visible := true;.Visible :=false;.Visible :=false;.Clear();.Enabled :=false;form1.RadioButton2.Checked then(False)(False);();;groupbox4.Visible = true thenProverka() then.Visible := false;.Visible := true;.Visible :=true;.Visible :=true;.Caption := '<Ответ>';();;;groupbox3.Visible = true thenstringgrid2.Cells[0,1]<>'' then.Visible := false;.Visible := true;.ColCount :=2;.RowCount :=2;();label5.Caption :='Подуктов нет?!';;groupbox1.Visible = true thenstringgrid1.Cells[0,1]<>'' then.Enabled := true;.Visible := false;.Visible := true;label5.Caption :='Ресурсы не могут отсутствовать!';;;TForm1.BitBtn5Click(Sender: TObject);.Caption :='';groupbox3.Visible = true then.Enabled := false;.Visible := false;.Visible := true;;groupbox4.Visible = true then.Visible := false;.Visible := true;;groupbox5.Visible = true then.Visible := false;.Visible := true;.Visible :=false;.Visible :=false;.Caption := 'Дальше -->';.Enabled :=true;;groupbox6.Visible = true then.Visible := false;.Visible := true;.Visible :=true;.Visible :=true;.Enabled :=true;;;TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13: edit4.SetFocus ;

'a'..'z': ;

'A'..'Z': ;

'а'..'я': ;

'А'..'Я': ;

'0'..'9': ;key:=#0;;;TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13: bitbtn3.SetFocus;

'0'..'9': ;

#110:;

#46:;key:=#0;;;TForm1.BitBtn3Click(Sender: TObject);Count:integer;:boolean;:=true;(edit3.Text ='')or(edit4.Text ='') then:=false;.Caption :='Заполните все поля ввода.';;Count := 1 to stringgrid2.RowCount do(edit3.Text = stringgrid2.Cells [0,Count]) then:=false;;boo then(stringgrid2.RowCount = 2) and (stringgrid2.Cells[0,1]='') then.RowCount := stringgrid2.RowCount.RowCount := stringgrid2.RowCount + 1;.Cells [0,stringgrid2.RowCount - 1] := edit3.Text;.Cells [1,stringgrid2.RowCount - 1] := edit4.Text;

label5.Caption :='Продукт добавлен!';

edit3.SetFocus();.Caption :='Такой продукт уже есть';;TForm1.BitBtn9Click(Sender: TObject);Count,i:integer;:boolean;:=true;Count := 1 to stringgrid2.RowCount do(edit3.Text = stringgrid2.Cells [0,Count]) then:=Count;:=false;;;boo then

label5.Caption :='Такого продукта нет в списке!';

end.Rows[i].Clear ;Count := i to stringgrid2.RowCount-1 do.Cells [0,Count]:=stringgrid2.Cells [0,Count+1];.Cells [1,Count]:=stringgrid2.Cells [1,Count+1];;.RowCount := stringgrid2.RowCount -1;.Caption :='Продукт стерт.';;;TForm1.BitBtn8Click(Sender: TObject);Count,i:integer;:boolean;:=true;Count := 1 to stringgrid2.RowCount do(edit3.Text = stringgrid2.Cells [0,Count]) then:=Count;:=false;;;boo then

label5.Caption :='Такого продукта нет в списке!';

end.Cells [0,i] := edit3.Text;.Cells [1,i] := edit4.Text;

label5.Caption :='Продукт изменен.';

end;;TForm1.StringGrid2Click(Sender: TObject);i :integer;:=stringgrid2.Row;.Text := stringgrid2.Cells [0,i];.Text := stringgrid2.Cells [1,i];.Caption := '';;TForm1.StringGrid3KeyPress(Sender: TObject; var Key: Char);key of

#8: ;

#13:;

'0'..'9': ;

#110:;

',': ;

#46:;key:=#0;;;TForm1.BitBtn11Click(Sender: TObject);form1.RadioButton2.Checked then(True)(True);;TForm1.BitBtn10Click(Sender: TObject);form1.RadioButton2.Checked then(False)(False);;

//заполняем и выполняем

bitBtn5.Enabled:=true;Proverka() then.Visible := false;.Visible := true;.Visible :=true;.Visible :=true;.Caption := '<Ответ>';();;;TForm1.Button2Click(Sender: TObject);.Visible :=false;.Visible :=false;.Caption := 'Дальше -->';.Enabled :=true;.Visible := true;.Visible := false;.Visible := false;.Visible := false;.Visible := false;.Caption:='';();;TForm1.Button3Click(Sender: TObject);

begin.MessageBox('Данный программный продукт был разработан Гринёвой Татьяной.'+ #13 +' Использование данного продукта разрешено только в учебных целях.','О программе.');;.

Список использованной литературы

1    Зайченко Ю.П., Шумилова С.А. Исследование операций.

2       Вентцель. Е. С. Элементы динамического программирования / Е. С.

         Карасев А.Н., Н.Ш. Кремер, Т.Н. Савельева «Математические методы в экономике», М. 2000

         Лищенко «Линейное и нелинейное программирование», М. 2003

         А.Н. Карасев, Н.Ш. Кремер, Т.Н. Савельева «Математические методы в экономике», М.2000

         Интернет источники:

<http://cyberfac.ru/>

<http://emm.ostu.ru/l>

<http://matekonomika.narod.ru/>

7 О.О. Замков, А.В. Толстопятенко, Ю.Н. Черемных «Математические методы <http://institutiones.com/download/books/1039-matematicheskie-metodi-v-ekonomike.html>»


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!