Мегаобучалка Главная | О нас | Обратная связь


Исследовательская часть



2020-02-03 229 Обсуждений (0)
Исследовательская часть 0.00 из 5.00 0 оценок




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

Матрица игры с заданной вероятностью. Возможно строительство четырех типов электростанций А1 - тепловые, А2 - приплотинные, А3 - безшлюзовые, А4 - шлюзовые. Эффективность каждого типов электростанций определяется сочетанием различных факторов, в том числе и факторов , зависящих от различных случайных явлений: погодных условий. режима рек, стоимости топлива и его перевозки, сейсмической обстановки района и т.д. Число возможных сочетаний факторов равно десяти, обозначим их как состояния природы (П1, П2, П3, П4, П5, П6, П7, П8, П9, П10). Вероятности возникновения каждой обстановки равны: q1=0,12 , q2=0,04, q3=0,09, q4=0,1, q5=0,06, q6=0,15, q7=0,07, q8=0,12, q9=0,16, q10=0,9. Экономическая эффективность типа электростанций в зависимости состояний природы задается в программном модуле:

Доминирующих либо дублирующих строк нет, упрощение не требуется:

Стратегия А4 является оптимальной:

 

Матрица игры и построенная на ее основе матрица рисков с равной вероятностью. На промышленном предприятии готовятся к переходу на выпуск новых видов продукции товаров народного потребления. При этом возможны восемь решений А1, А2, А3, А4, А5, А6, А7, А8, каждому из которых соответствует определенный вид продукции или их сочетание. Результаты принятых решений существенно зависит от обстановки (степени обеспеченности производства материальными ресурсами), которая может быть семи видов: П1, П2, П3, П4, П5, П6, П7. Каждому сочетанию Аi, i=1, …, 8 и обстановки Пj, j=1, …, 7, соответствует определенный выигрыш - эффективность выпуска новых видов продукции. Всевозможные выигрыши записываются в программный модуль:

 

Доминирующих либо дублирующих строк нет, упрощение не требуется:

 

Рассчитаем матрицу рисков:

 

 

Стратегия А3 является оптимальной:

 

Матрица рисков с относительными значениями вероятностей состояний природы. Крупный инвестор может вложить свою прибыль в семь бизнес проектов A1 , A2, A3, A4, A5, A6, A7, при этом возможны пять состояний рынка П 1, П 2, П 3, П4, П 5. Каждому сочетанию Аi, i=1, …, 7 и обстановки Пj, j=1, …, 5, соответствует определенный риск упустить выгоду.

 

 

Всевозможные выигрыши записываются в программный модуль:

 

Строка А7 больше А2, А6 равна А2:

 

Вероятность возникновения определенных состояний рынка инвестору не известна, но имеет представление, какие события более, а какие менее вероятны. Он решил, что менее правдоподобно возникновение П1, затем по степени правдоподобности следуют состояния П2, П3 и П4, наибольшей правдоподобностью обладает П5. Не зная, на сколько одна вероятность состояния природы отличается от другой, он придал им относительные значения, 9: 16: 18: 22: 23 для П 1, П 2, П 3, П4, П 5 соответственно. Нажав на кнопку задать вводится последовательность:

 

 

Расчет вероятности:

Оптимальное значение А5:


Заключение

В ходе выполнения курсовой работы был исследован процесс принятия решений в условиях риска. Для поиска оптимального значения были рассмотрены критерии Байеса, Лапласа и критерий оптимальных значений вероятностей состояний природы относительно выигрышей и рисков.

Кроме этого был создан программный модуль, реализующий данные алгоритмы.

В данный работе были выполнены следующие задачи:

1. Выполнено подробное математическое описание поиска оптимальной стратегии в условиях риска.

2. Детально описан алгоритм решения задачи. Проиллюстрирована работа алгоритма на контрольном примере с использованием стандартных программных средств (Excel) с численным выводом результатов.

3. Выбрана среда программирования Delphi7. Описана модульная структуры программного комплекса. Представлен интерфейс.

4. Исследована работоспособность программы на трех тестовых примерах.


Список литературы

1. Лабскер Л. Г.Теория критериев оптимальности и экономические решения – М.: Издательство «КноРус», 2005. – 744 с.

2. Хемди А. Таха Введение в исследование операций. – М.: «Вильямс», 2007. – 903 с.

3. Шапкин А.С. Экономитческие и финансовые риски. Оценка, управление, портфель инвестиций[Текст]: Учебное пособие для вузов/ А.С. Шапкин – М.: Издательско – торговая корпорация «Дашков и К°», 2003. - 544 с.

4. Экономико-математическое моделирование: Учебник для студентов вузов/ Под общ. ред. И.Н. Дрогобыцкого.- М.: Издательство “Экзамен”, 2004.- 800 с.

5. http://www.delphisources.ru/


Приложение

Основной модуль:

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Spin, Grids;

 

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

GroupBox2: TGroupBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

CheckBox1: TCheckBox;

CheckBox2: TCheckBox;

GroupBox3: TGroupBox;

RadioButton3: TRadioButton;

Button2: TButton;

RadioButton4: TRadioButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

StringGrid1: TStringGrid;

GroupBox4: TGroupBox;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

GroupBox5: TGroupBox;

Button1: TButton;

procedure CheckBox1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure CheckBox1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure CheckBox2KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure CheckBox2MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

procedure RadioButton4Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure SpinEdit1Change(Sender: TObject);

procedure SpinEdit2Change(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);

procedure StringGrid3KeyPress(Sender: TObject; var Key: Char);

procedure Button4Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

 

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

otvet:integer;

implementation

uses unit2;

{$R *.dfm}

 

procedure TForm1.CheckBox1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

CheckBox2.Checked:=False;

RadioButton1.Enabled:=False;

RadioButton2.Enabled:=False;

Button2.Enabled:=false;

StringGrid2.Enabled:=true;

end;

 

procedure TForm1.CheckBox1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = 13 then begin

CheckBox1.Checked:=true;

CheckBox2.Checked:=False;

RadioButton1.Enabled:=False;

RadioButton2.Enabled:=False;

Button2.Enabled:=false;

StringGrid2.Enabled:=true;

end;

end;

 

procedure TForm1.CheckBox2KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = 13 then begin

CheckBox2.Checked:=true;

CheckBox1.Checked:=False;

RadioButton1.Enabled:=true;

RadioButton2.Enabled:=true;

StringGrid2.Enabled:=false;

if RadioButton2.Checked=True then

Button2.Enabled:=true;

end;

end;

 

procedure TForm1.CheckBox2MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

CheckBox1.Checked:=False;

RadioButton1.Enabled:=true;

RadioButton2.Enabled:=true;

StringGrid2.Enabled:=false;

if RadioButton2.Checked=True then

Button2.Enabled:=true;

end;

 

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

Button2.Enabled:=true;

end;

 

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

Button2.Enabled:=false;

end;

 

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

GroupBox4.Caption:='Ìàòðèöà èãðû';

Button3.Enabled:=True;

end;

 

procedure TForm1.RadioButton4Click(Sender: TObject);

begin

Form1.Height:=480;

GroupBox4.Caption:='Ìàòðèöà ðèñêîâ';

Button3.Enabled:=false;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

Form2.Show;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

var i:integer;

begin

Form1.Top:=210;

Form1.Left:=410;

Form1.Height:=480;

StringGrid1.ColCount:=SpinEdit1.Value+1;

StringGrid1.RowCount:=SpinEdit2.Value+1;

StringGrid2.ColCount:=SpinEdit1.Value+1;

StringGrid1.DefaultColWidth:=round((StringGrid1.Width-10)/StringGrid1.ColCount);

StringGrid1.DefaultRowHeight:=round((StringGrid1.Height-10)/StringGrid1.RowCount);

StringGrid2.DefaultColWidth:=round((StringGrid2.Width-10)/StringGrid2.ColCount);

for i:=1 to SpinEdit1.Value do

StringGrid1.Cells[i,0]:='Ï'+inttostr(i);

for i:=1 to SpinEdit2.Value do

StringGrid1.Cells[0,i]:='A'+inttostr(i);

StringGrid2.Cells[0,0]:='q';

end;

 

procedure TForm1.SpinEdit1Change(Sender: TObject);

var i:integer;

begin

StringGrid1.ColCount:=SpinEdit1.Value+1;

StringGrid1.DefaultColWidth:=round((StringGrid1.Width-10)/StringGrid1.ColCount);

StringGrid2.ColCount:=SpinEdit1.Value+1;

StringGrid2.DefaultColWidth:=round((StringGrid2.Width-10)/StringGrid2.ColCount);

for i:=1 to SpinEdit1.Value+1 do

StringGrid1.Cells[i,0]:='Ï'+inttostr(i);

end;

 

procedure TForm1.SpinEdit2Change(Sender: TObject);

var i:integer;

begin

StringGrid1.RowCount:=SpinEdit2.Value+1;

StringGrid1.DefaultRowHeight:=round((StringGrid1.Height-10)/StringGrid1.RowCount);

for i:=1 to SpinEdit2.Value+1 do

StringGrid1.Cells[0,i]:='A'+inttostr(i);

end;

 

procedure TForm1.Button3Click(Sender: TObject);

var

i,j:integer;

f:boolean;

a: array [0..12] of integer;

begin

f:=true;

for i:=0 to SpinEdit2.Value-1 do

a[i]:=0;

for i:=1 to SpinEdit1.Value do

for j:=1 to SpinEdit2.Value do

  if StringGrid1.Cells[i,j]='' then f:=false;

if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

else begin

Form1.Height:=757;

StringGrid3.ColCount:=SpinEdit1.Value+1;

StringGrid3.RowCount:=SpinEdit2.Value+1;

StringGrid3.DefaultColWidth:=round((StringGrid3.Width-10)/StringGrid3.ColCount);

StringGrid3.DefaultRowHeight:=round((StringGrid3.Height-10)/StringGrid3.RowCount);

for i:=1 to SpinEdit1.Value do

StringGrid3.Cells[i,0]:='Ï'+inttostr(i);

for i:=1 to SpinEdit2.Value do

StringGrid3.Cells[0,i]:='A'+inttostr(i);

for i:=1 to SpinEdit1.Value do

for j:=1 to SpinEdit2.Value do

if a[i-1]<strtoint(StringGrid1.Cells[i,j]) then a[i-1]:=strtoint(StringGrid1.Cells[i,j]);

 

for i:=1 to SpinEdit1.Value do

for j:=1 to SpinEdit2.Value do

StringGrid3.Cells[i,j]:=inttostr(a[i-1]-strtoint(StringGrid1.Cells[i,j]));

end;

end;

 

procedure TForm1.Button5Click(Sender: TObject);

var i,j:integer;

begin

Form1.Height:=480;

for i:=1 to SpinEdit1.Value do begin

for j:=1 to SpinEdit2.Value do begin

StringGrid1.Cells[i,j]:='';

StringGrid3.Cells[i,j]:='';

end;

StringGrid2.Cells[i,0]:='';

Form2.StringGrid1.Cells[i,1]:='';

Form2.StringGrid2.Cells[i,1]:='';

end;

end;

 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Form2.Close;

end;

 

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

begin

if not (key in ['0'..'9',#8]) then key:=#0;

end;

end;

procedure TForm1.StringGrid2KeyPress(Sender: TObject; var Key: Char);

begin

begin

if not (key in ['0'..'9','.',',',#8]) then key:=#0;

end;

end;

procedure TForm1.StringGrid3KeyPress(Sender: TObject; var Key: Char);

begin

begin

if not (key in ['0'..'9',#8]) then key:=#0;

end;

end;

 

procedure TForm1.Button4Click(Sender: TObject);

var

i,j,max,maxr:integer;

f:boolean;

a: array [0..12] of Real;

begin

f:=true;

max:=0;

maxr:=0;

for i:=0 to SpinEdit2.Value-1 do

a[i]:=0;

for i:=1 to SpinEdit1.Value do

for j:=1 to SpinEdit2.Value do

  if StringGrid1.Cells[i,j]='' then f:=false;

if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

else begin

f:=true;

// ÊÐÈÒÅÐÈÉ ÁÀÉÅÑÀ

if CheckBox1.Checked=true then begin

for i:=1 to SpinEdit1.Value do

    if StringGrid2.Cells[i,0]='' then f:=false;

if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

else begin

// äëÿ ìàòðèöû èãðû ïîäñò÷åò ìàò îæèäàíèÿ

for i:=1 to SpinEdit1.Value do

   for j:=1 to SpinEdit2.Value do

       a[j-1]:=a[j-1]+strtoint(StringGrid1.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);

// äëÿ ìàòðèöû èãðû îïðåäåëåíèÿ ìàêñèìóìà

if RadioButton3.Checked=true then begin

for i:=1 to SpinEdit2.Value-1 do

     if a[max]<a[i] then max:=i;

     if Form1.Height<757 then

     ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)); end;

// äëÿ ìàòðèöû ðèñêîâ îïðåäåëåíèÿ ìèíèìóìà

if RadioButton4.Checked=true then begin

for i:=1 to SpinEdit2.Value-1 do

     if a[max]>a[i] then max:=i; ShowMessage('Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(max+1)); end;

// äëÿ ðàñ÷èòàííîé ìàòðèöû ðèñêîâ

if (Form1.Height=757) and (RadioButton3.Checked=true) then begin

f:=true;

for i:=1 to SpinEdit1.Value do

    for j:=1 to SpinEdit2.Value do

    if StringGrid3.Cells[i,j]='' then f:=false;

    if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

    else begin

      for i:=0 to SpinEdit2.Value-1 do

            a[i]:=0;

      for i:=1 to SpinEdit1.Value do

          for j:=1 to SpinEdit2.Value do

              a[j-1]:=a[j-1]+strtoint(StringGrid3.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);

      for i:=1 to SpinEdit2.Value-1 do

            if a[maxr]>a[i] then maxr:=i;

    if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷åíèÿ ñîâïàäàþò: À'+inttostr(max+1))

    else ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)+'; Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(maxr+1))

    end;

end;

end;

end;

// ÊÐÈÒÅÐÈÉ ËÀÏËÀÑÀ

If (CheckBox2.Checked=true) and (RadioButton1.Checked=true) then begin

// äëÿ ìàòðèöû èãðû ïîäñò÷åò ìàò îæèäàíèÿ

for i:=1 to SpinEdit1.Value do

   for j:=1 to SpinEdit2.Value do

       a[j-1]:=a[j-1]+strtoint(StringGrid1.Cells[i,j]);

// äëÿ ìàòðèöû èãðû îïðåäåëåíèÿ ìàêñèìóìà

if RadioButton3.Checked=true then Begin

for i:=1 to SpinEdit2.Value-1 do

     if a[max]<a[i] then max:=i;

     if Form1.Height<757 then

     ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)); end;

// äëÿ ìàòðèöû ðèñêîâ îïðåäåëåíèÿ ìèíèìóìà

if RadioButton4.Checked=true then begin

  for i:=1 to SpinEdit2.Value-1 do

     if a[max]>a[i] then max:=i; ShowMessage('Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(max+1)); end;

// äëÿ ðàñ÷èòàííîé ìàòðèöû ðèñêîâ

if (Form1.Height=757) and (RadioButton3.Checked=true) then begin

f:=true;

for i:=1 to SpinEdit1.Value do

    for j:=1 to SpinEdit2.Value do

if StringGrid3.Cells[i,j]='' then f:=false;

if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

else begin

      for i:=0 to SpinEdit2.Value-1 do

            a[i]:=0;

      for i:=1 to SpinEdit1.Value do

          for j:=1 to SpinEdit2.Value do

              a[j-1]:=a[j-1]+strtoint(StringGrid3.Cells[i,j]);

      for i:=1 to SpinEdit2.Value-1 do

            if a[maxr]>a[i] then maxr:=i;

    if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷åíèÿ ñîâïàäàþò: À'+inttostr(max+1))

    else ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)+'; Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(maxr+1))

end;

end;

end;

f:=true;

// ÒÐÅÒÈÉ ÊÐÈÒÅÐÈÉ

If (CheckBox2.Checked=true) and (RadioButton2.Checked=true) then begin

for i:=1 to SpinEdit1.Value do

    if StringGrid2.Cells[i,0]='' then f:=false;

if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

else begin

// äëÿ ìàòðèöû èãðû ïîäñò÷åò ìàò îæèäàíèÿ

for i:=1 to SpinEdit1.Value do

   for j:=1 to SpinEdit2.Value do

       a[j-1]:=a[j-1]+strtoint(StringGrid1.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);

// äëÿ ìàòðèöû èãðû îïðåäåëåíèÿ ìàêñèìóìà

if RadioButton3.Checked=true then begin

for i:=1 to SpinEdit2.Value-1 do

     if a[max]<a[i] then max:=i;

     if Form1.Height<757 then

     ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)); end;

// äëÿ ìàòðèöû ðèñêîâ îïðåäåëåíèÿ ìèíèìóìà

if RadioButton4.Checked=true then begin

for i:=1 to SpinEdit2.Value-1 do

     if a[max]>a[i] then max:=i; ShowMessage('Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(max+1)); end;

// äëÿ ðàñ÷èòàííîé ìàòðèöû ðèñêîâ

if (Form1.Height=757) and (RadioButton3.Checked=true) then begin

f:=true;

for i:=1 to SpinEdit1.Value do

    for j:=1 to SpinEdit2.Value do

    if StringGrid3.Cells[i,j]='' then f:=false;

    if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

    else begin

      for i:=0 to SpinEdit2.Value-1 do

            a[i]:=0;

      for i:=1 to SpinEdit1.Value do

          for j:=1 to SpinEdit2.Value do

              a[j-1]:=a[j-1]+strtoint(StringGrid3.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);

      for i:=1 to SpinEdit2.Value-1 do

            if a[maxr]>a[i] then maxr:=i;

    if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷åíèÿ ñîâïàäàþò: À'+inttostr(max+1))

    else ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)+'; Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(maxr+1))

    end;

end;

end;

end;

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

s: string;

i,j,l,p,k:integer;

f:boolean;

a: array [0..13] of integer;

begin

f:=true;

for i:=1 to SpinEdit1.Value do

for j:=1 to SpinEdit2.Value do

  if StringGrid1.Cells[i,j]='' then f:=false;

if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

else begin

p:=0; k:=0;

for i:=1 to SpinEdit1.Value do

 a[i]:=0;

if RadioButton3.Checked=true then

for l:=1 to SpinEdit2.Value-1 do

for j:=l+1 to SpinEdit2.Value do begin

for i:=1 to SpinEdit1.Value do begin

       if strtoint(StringGrid1.Cells[i,l])>=strtoint(StringGrid1.Cells[i,j]) then p:=p+1;

       if strtoint(StringGrid1.Cells[i,1])<strtoint(StringGrid1.Cells[i,j]) then k:=k+1; end;

if (p=SpinEdit1.Value) then a[j]:=-1;

if (k=SpinEdit1.Value) then a[l]:=-1;

p:=0;

k:=0;

end;

if RadioButton4.Checked=true then 

for l:=1 to SpinEdit2.Value-1 do

for j:=l+1 to SpinEdit2.Value do begin

for i:=1 to SpinEdit1.Value do begin

       if strtoint(StringGrid1.Cells[i,l])<=strtoint(StringGrid1.Cells[i,j]) then p:=p+1;

       if strtoint(StringGrid1.Cells[i,1])>strtoint(StringGrid1.Cells[i,j]) then k:=k+1; end;

if (p=SpinEdit1.Value) then a[j]:=-1;

if (k=SpinEdit1.Value) then a[l]:=-1;

p:=0;

k:=0;

end;

for j:=1 to SpinEdit2.Value do

if a[j]=-1 then begin

s := s + 'A' + inttostr(j)+' ';

if SpinEdit2.Value>2 then

    for i:=1 to SpinEdit1.Value do

       StringGrid1.Cells[i,j]:=StringGrid1.Cells[i,j+1];

SpinEdit2.Value:=SpinEdit2.Value-1; end;

if s='' then ShowMessage('Íå òðåáóåòñÿ') else begin

ShowMessage('Óáðàë '+s);

If SpinEdit2.Value<=2 then

for i:=1 to SpinEdit2.Value do

if (a[i]=0) then ShowMessage(' ðåçóëüòàòå óïðîùåíèÿ îñòàëàñü òîëüêî 1 ñòðàòåãèÿ, ñëåäóò ñ÷èòàòü îïòèìàëüíîé À'+inttostr(i))

end;

end;

end;

 

end.

 

Дополнительный модуль:

 

unit Unit2;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls, Spin;

 

type

TForm2 = class(TForm)

StringGrid1: TStringGrid;

Label1: TLabel;

SpinEdit1: TSpinEdit;

Button1: TButton;

StringGrid2: TStringGrid;

Memo1: TMemo;

procedure FormCreate(Sender: TObject);

procedure SpinEdit1Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form2: TForm2;

 

implementation

uses unit1;

{$R *.dfm}

 

procedure TForm2.FormCreate(Sender: TObject);

var i:integer;

begin

Form2.Top:=320;

Form2.Left:=520;

SpinEdit1.Value:=Form1.SpinEdit1.Value;

StringGrid1.ColCount:=SpinEdit1.Value;

StringGrid1.DefaultColWidth:=round((StringGrid1.Width-10)/StringGrid1.ColCount);

StringGrid2.ColCount:=SpinEdit1.Value;

StringGrid2.DefaultColWidth:=round((StringGrid2.Width-10)/StringGrid2.ColCount);

for i:=0 to SpinEdit1.Value-1 do

StringGrid1.Cells[i,0]:='k'+inttostr(i+1);

for i:=0 to SpinEdit1.Value-1 do

StringGrid2.Cells[i,0]:='q'+inttostr(i+1);

end;

 

procedure TForm2.SpinEdit1Change(Sender: TObject);

var i:integer;

begin

StringGrid1.ColCount:=SpinEdit1.Value;

StringGrid1.DefaultColWidth:=round((StringGrid1.Width-10)/StringGrid1.ColCount);

StringGrid2.ColCount:=SpinEdit1.Value;

StringGrid2.DefaultColWidth:=round((StringGrid2.Width-10)/StringGrid2.ColCount);

Form1.SpinEdit1.Value:=SpinEdit1.Value;

for i:=0 to SpinEdit1.Value-1 do

StringGrid1.Cells[i,0]:='k'+inttostr(i+1);

for i:=0 to SpinEdit1.Value-1 do

StringGrid2.Cells[i,0]:='q'+inttostr(i+1);

end;

 

procedure TForm2.Button1Click(Sender: TObject);

var i,s:integer;

f:boolean;

begin

f:=true;

s:=0;

For i:=0 to SpinEdit1.Value-1 do

if StringGrid1.Cells[i,1]='' then f:=false;

if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

else begin

For i:=0 to SpinEdit1.Value-1 do

s:=s+strtoint(StringGrid1.Cells[i,1]);

if s>0 then begin

StringGrid2.Cells[0,1]:=floattostr(strtoint(StringGrid1.Cells[0,1])/s);

For i:=0 to SpinEdit1.Value-1 do begin

StringGrid2.Cells[i,1]:=floattostr(strtoint(StringGrid1.Cells[i,1])/s);

Form1.StringGrid2.Cells[i+1,0]:=StringGrid2.Cells[i,1];

Memo1.Text:=Memo1.Text+StringGrid1.Cells[i,1]+'*'+StringGrid2.Cells[0,1]+'/'+

                        StringGrid1.Cells[0,1]+' ';

end;end

else ShowMessage('Çíà÷åíèÿ ðàâíû 0');

end;

end;

 

procedure TForm2.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

begin

if not (key in ['0'..'9',#8]) then key:=#0;

end;

end;

 

end.



2020-02-03 229 Обсуждений (0)
Исследовательская часть 0.00 из 5.00 0 оценок









Обсуждение в статье: Исследовательская часть

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (229)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)