Страница: 8/10
uses
Forms,
osnowa in 'osnowa.pas' {form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(Tform1, form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
unit osnowa;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ToolWin, ComCtrls, Buttons, ActnList, StdActns, Menus,
Mask, ExtCtrls, jpeg;
type
Tform1 = class(TForm)
tabliza: TStringGrid;
Panel1: TPanel;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
C_S: TStringGrid;
Panel2: TPanel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Panel3: TPanel;
Panel4: TPanel;
Label17: TLabel;
Label18: TLabel;
Panel5: TPanel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
RadioButton7: TRadioButton;
RadioButton8: TRadioButton;
Button3: TButton;
Panel6: TPanel;
Label1: TLabel;
BitBtn1: TBitBtn;
Label15: TLabel;
procedure WWod_koef(Sender: TObject);
procedure W_Rezultat(Sender: TObject);
procedure W_tabliza_A(Sender: TObject);
procedure W_tabliza_B(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
form1: Tform1;
C_B,C_A:array [1 10,1 10] of integer; { платёжная матрица игрока А,В}
a_b,a_m,b_b,b_m:array[1 10] of integer; {наибольший наименьший выигрыш иг. А,В}
al:array[1 10] of real; {массив альфа}
V_A,V_B:array[1 10,1 10]of real; {Расчётные выигрыши иг. А,В }
max_a:real; { Наибольший выигрыш игрока А}
max_b:real; { Наибольший выигрыш игрока В}
H_a:integer; { Оптимальная стратегия игрока А}
h_b:integer; { Оптимальная стратегия игрока В}
m:Integer; { Количество стратегий игрока А}
n:Integer; { Количество стратегий игрока В}
k:Integer; { Количество статистических коэффициентов}
I,J:Integer;
implementation
uses Unit2;
{$R *.DFM}
{ вывод коэф., матрицы С_А}
procedure WW_A;
begin
form1.c_s.Colcount:=n+1;
form1.c_s.Rowcount:=m+1;
form1.tabliza.Rowcount:=m+1;
for i :=1 to m do
begin
form1.tabliza.Cells[0,i]:='A'+intToStr(i);
form1.C_S.Cells[0,i]:='A'+intToStr(i);
for j :=1 to n do
begin
form1.C_S.Cells[j,0]:='B'+intToStr(j);
form1.C_S.Cells[j,i]:=intToStr(C_A[i,j]);
end;
end;
with form1 do
begin
label23.caption:='A';
tabliza.cells[1,0]:='a_малая';tabliza.cells[2,0]:='a_большая';
end;
end;
{ Вывод наибольший, наименьший, расчётный выигрыш матрицы V_А}
procedure WW_A1;
begin
WW_A;
With form1.tabliza Do
begin
for j:=1 to n do
begin
cells[1,j]:=intToStr(a_m[j]);
cells[2,j]:=intToStr(a_b[j]);
end;
for i:=1 to m do
for j:=1 to k do
cells[j+2,i]:=floatToStr(V_a[i,j]);
end;
end;
{событие на нажатие кнопки 'Ввод коэф '}
procedure TForm1.WWod_koef(Sender: TObject);
begin
try
m:=strToint(edit1.text);
n:=strToint(edit2.text);
k:=strToint(edit3.text);
except
showMessage('Ошибочная запись числа ');
end;
try
Form2 := TForm2.Create(self);
tabliza.Colcount:=3+k;
Form2.ShowModal;
finally
Form2.Close;
WW_a;
end;
end;
{событие на нажатие кнопки 'вывод результата'}
procedure Tform1.W_Rezultat(Sender: TObject);
begin
Panel6.Visible:=false;
panel3.Visible:=true;
{Вводим из таблицы C_A в матрицу игрока А - C_A} { C_S[столбец,строка] }
for i :=1 to m do {по столбцам m таблицы C_S}
for j :=1 to n do {по строкам n таблицы C_S}
C_a[i,j]:=StrToInt(C_S.Cells[j,i]);
{Создаём матрицу C_B путём транспонирования матрицы игрока А}
for i :=1 to n do
for j :=1 to m do
C_b[i,j] :=StrToInt(C_S.Cells[i,j]);
Реферат опубликован: 8/03/2006