надо написать в делфе матрица
0,62 0,73 -0,43 -0,23
0,73 1,00 0,25 0,04
-0,41 0,62 0,21 0,44
0,84 0,32 0,18 -0,47
помогите пожалуйста
Говорите, что конкретно не получается, - поможем.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Spin, Buttons;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label4: TLabel;
Label5: TLabel;
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Matrix:array[1..40,1..40] of real;
rows,colons:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Color:=3774751;
stringgrid1.color:=form1.Color;
stringgrid2.color:=form1.Color;
stringgrid3.color:=form1.Color;
form1.Width:=970;
form1.Height:=275;
rows:=8;
colons:=8;
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
stringgrid1.RowCount:=spinedit1.Value;
stringgrid2.RowCount:=spinedit1.Value;
stringgrid3.RowCount:=spinedit1.Value;
rows:=spinedit1.value;
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
stringgrid1.colCount:=spinedit2.Value;
stringgrid2.colCount:=spinedit2.Value;
colons:=spinedit2.Value;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,j:integer;
null:string;
begin
null:='';
for i:=0 to rows-1 do
for j:=0 to colons-1 do
begin
null:=stringgrid1.Cells[j,i];
if null='' then
begin
application.MessageBox('ìàòðèöà íå ìîæåò ðàâíÿòüñÿ ïóñòîòå','îøèáêà',0);
exit;
end;
end;
for i:=0 to rows-1 do
for j:=0 to colons-1 do
matrix[i+1,j+1]:=strtofloat(stringgrid1.cells[j,i]);
for i:=0 to rows-1 do
for j:=0 to colons-1 do
stringgrid2.cells[j,i]:=floattostr(matrix[i+1,j+1]);
bitbtn1.enabled:=false;
bitbtn4.enabled:=true;
bitbtn2.enabled:=true;
bitbtn3.enabled:=true;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
var
i,j:integer;
begin
for i:=0 to rows-1 do
begin
stringgrid3.cells[0,i]:='';
for j:=0 to colons-1 do
begin
stringgrid1.cells[j,i]:='';
stringgrid2.cells[j,i]:='';
end;
end;
bitbtn1.enabled:=true;
bitbtn4.enabled:=false;
bitbtn2.enabled:=false;
bitbtn3.enabled:=false;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
label perexod;
var
k,j,i:integer;
begin
for i:=1 to rows do
begin
for j:=colons downto i do
matrix[i,j]:=matrix[i,j]/matrix[i,i];
if i=rows then goto perexod;
for k:=i+1 to rows do
for j:=colons downto i do
matrix[k,j]:=matrix[k,j]-(matrix[i,j]*matrix[k,i]);
end;
perexod:
bitbtn1.enabled:=false;
bitbtn4.enabled:=true;
bitbtn2.enabled:=false;
bitbtn3.enabled:=true;
for i:=0 to rows-1 do
for j:=0 to colons-1 do
stringgrid2.Cells[j,i]:=floattostr(matrix[i+1,j+1]);
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
label print;
var
i,k:integer;
matrixprint:array[1..40] of real;
begin
for i:=rows downto 1 do
begin
matrixprint:=matrix[i,colons];
if i=1 then goto print;
for k:=i-1 downto 1 do
matrix[k,colons]:=matrix[k,colons]-matrix[k,i]*matrixprint;
end;
print:
for i:=0 to rows do
stringgrid3.Cells[0,i]:=floattostr(matrixprint[i+1]);
bitbtn1.enabled:=false;
bitbtn4.enabled:=true;
bitbtn2.enabled:=false;
bitbtn3.enabled:=false;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Spin, Buttons;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label4: TLabel;
Label5: TLabel;
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Matrix:array[1..40,1..40] of real;
rows,colons:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Color:=3774751;
stringgrid1.color:=form1.Color;
stringgrid2.color:=form1.Color;
stringgrid3.color:=form1.Color;
form1.Width:=970;
form1.Height:=275;
rows:=8;
colons:=8;
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
stringgrid1.RowCount:=spinedit1.Value;
stringgrid2.RowCount:=spinedit1.Value;
stringgrid3.RowCount:=spinedit1.Value;
rows:=spinedit1.value;
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
stringgrid1.colCount:=spinedit2.Value;
stringgrid2.colCount:=spinedit2.Value;
colons:=spinedit2.Value;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,j:integer;
null:string;
begin
null:='';
for i:=0 to rows-1 do
for j:=0 to colons-1 do
begin
null:=stringgrid1.Cells[j,i];
if null='' then
begin
application.MessageBox('ìàòðèöà íå ìîæåò ðàâíÿòüñÿ ïóñòîòå','îøèáêà',0);
exit;
end;
end;
for i:=0 to rows-1 do
for j:=0 to colons-1 do
matrix[i+1,j+1]:=strtofloat(stringgrid1.cells[j,i]);
for i:=0 to rows-1 do
for j:=0 to colons-1 do
stringgrid2.cells[j,i]:=floattostr(matrix[i+1,j+1]);
bitbtn1.enabled:=false;
bitbtn4.enabled:=true;
bitbtn2.enabled:=true;
bitbtn3.enabled:=true;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
var
i,j:integer;
begin
for i:=0 to rows-1 do
begin
stringgrid3.cells[0,i]:='';
for j:=0 to colons-1 do
begin
stringgrid1.cells[j,i]:='';
stringgrid2.cells[j,i]:='';
end;
end;
bitbtn1.enabled:=true;
bitbtn4.enabled:=false;
bitbtn2.enabled:=false;
bitbtn3.enabled:=false;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
label perexod;
var
k,j,i:integer;
begin
for i:=1 to rows do
begin
for j:=colons downto i do
matrix[i,j]:=matrix[i,j]/matrix[i,i];
if i=rows then goto perexod;
for k:=i+1 to rows do
for j:=colons downto i do
matrix[k,j]:=matrix[k,j]-(matrix[i,j]*matrix[k,i]);
end;
perexod:
bitbtn1.enabled:=false;
bitbtn4.enabled:=true;
bitbtn2.enabled:=false;
bitbtn3.enabled:=true;
for i:=0 to rows-1 do
for j:=0 to colons-1 do
stringgrid2.Cells[j,i]:=floattostr(matrix[i+1,j+1]);
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
label print;
var
i,k:integer;
matrixprint:array[1..40] of real;
begin
for i:=rows downto 1 do
begin
matrixprint:=matrix[i,colons];
if i=1 then goto print;
for k:=i-1 downto 1 do
matrix[k,colons]:=matrix[k,colons]-matrix[k,i]*matrixprint;
end;
print:
for i:=0 to rows do
stringgrid3.Cells[0,i]:=floattostr(matrixprint[i+1]);
bitbtn1.enabled:=false;
bitbtn4.enabled:=true;
bitbtn2.enabled:=false;
bitbtn3.enabled:=false;
end;
end.
хотела узнать правильно ли написано, если нет то в каком месте и как исправить
Цитата: сашулька
хотела узнать правильно ли написано, если нет то в каком месте и как исправить
А какое место смущает? Или смущает то что слямзили чужой код и ничего в нем не понимаете?
Скажу одно: вряд ли кто-то будет вчитываться в этот код. Выпишите то, что касается конкретно алгоритма, и задайте конкретные вопросы, в противном случае - вам прямой путь на
я не слямзила чужой код, просто это вообще первая программа которую я написала на делфи, и не знаю так ли должно все выглядеть.
icq: 588002847