Вот собственно то что есть) Нужно написать процедуру которая бы находила определитель матриц 4х4 - 10х10 (В этом варианте она даже не начата, все что пытался делать неработает)
Open и save диалоги удалил ибо не помещается
Помогите пожалуйста уж никак не сообразить(((
Код:
var
Form1: TForm1;
N:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); //Кнопка создания таблицы
begin
N:=StrToInt(edit1.Text);
if (N>10) or (N<1) then begin
Showmessage ('Vvedite znachenie OT 1 DO 10');
edit1.Text:=chr(0);
end
else begin
tabl.ColCount:=N;
tabl.RowCount:=N;
tabl.visible:=True;
label2.Caption:= 'Введите элементы матрицы или выбирите из файла';
edit1.visible:=false;
label1.Visible:=false;
label2.Visible:=true;
tabl.Height:=41*N+9;
tabl.Width:=41*N+9;
button1.Visible:=false;
button2.Visible:=true;
button4.Enabled:=true;
label5.Visible:=false;
label6.Visible:=false;
label7.Visible:=false;
label8.Visible:=false;
label9.Visible:=false;
label10.Visible:=false;
end;
end;
procedure TForm1.tablKeyPress(Sender: TObject; var Key: Char);// условие допустимых значений, которые можно вводить в таблицу
begin
case Key of
'0'..'9' : ;
'-' : ;
#8 : ;
#13 : ;
else key:=chr(0);
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);// условие допустимых значений, которые можно вводить в Edit1
begin
case Key of
'0'..'9' : ;
#8 : ;
#13 : ;
else key:=chr(0);
end;
end;
procedure matrix22;//Процедура для частного случая (матрица 2х2)
var
x:integer;
q,w,e,r:integer;
begin
q:=strtoint(Form1.tabl.Cells[0,0]);
w:=strtoint(Form1.tabl.Cells[1,1]);
e:=strtoint(Form1.tabl.Cells[1,0]);
r:=strtoint(Form1.tabl.Cells[0,1]);
x:=q*w-e*r;
Form1.label3.caption:='Определитель равен '+ intToStr(x)+#13;
end;
procedure matrix33;//Процедура для частного случая (матрица 3х3)
var
x:integer;
a11,a12,a13,a21,a22,a23,a31,a32,a33:integer;
begin
a11:=strtoint(Form1.tabl.Cells[0,0]);
a22:=strtoint(Form1.tabl.Cells[1,1]);
a33:=strtoint(Form1.tabl.Cells[2,2]);
a12:=strtoint(Form1.tabl.Cells[1,0]);
a13:=strtoint(Form1.tabl.Cells[2,0]);
a21:=strtoint(Form1.tabl.Cells[0,1]);
a23:=strtoint(Form1.tabl.Cells[2,1]);
a31:=strtoint(Form1.tabl.Cells[0,2]);
a32:=strtoint(Form1.tabl.Cells[1,2]);
x:=a11*a22*a33+a12*a23*a31+a21*a32*a13-a31*a22*a13-a12*a21*a33-a11*a23*a32;
Form1.label3.caption:='Определитель равен '+ intToStr(x)+#13;
end;
procedure TForm1.Button2Click(Sender: TObject); // Кнопка расчета определителя
begin
if N=1 then
Form1.Label3.Caption:='Определитель равен '+ Form1.tabl.Cells[0,0];
if N=2 then
matrix22;
if N=3 then
matrix33;
button5.Enabled:=true;
button6.Enabled:=true;
button7.Enabled:=true;
button4.Enabled:=false;
button2.Visible:=false;
label2.Visible:=false;
label3.Visible:=true;
button1.Visible:=false;
end;
procedure TForm1.Button3Click(Sender: TObject); // Кнопка завершения программы
begin
Form1.Close;
end;
procedure TForm1.button7Click(Sender: TObject);
var
i:Integer;
begin
button2.Visible:=true;
Edit1.Visible:=true;
Label1.Visible:=true;
Label3.Visible:=False;
Button1.Visible:=True;
Button2.Visible:=False;
tabl.visible:=false;
button7.Enabled:=false;
Label4.Visible:=false;
button4.Enabled:=false;
button5.Enabled:=false;
button6.Enabled:=false;
label5.Visible:=true;
label6.Visible:=true;
label7.Visible:=true;
label8.Visible:=true;
label9.Visible:=true;
label10.Visible:=true;
For i:=0 to tabl.RowCount-1 do
tabl.Rows[i].Clear;
Edit1.Clear;
end;
procedure TForm1.Button6Click(Sender: TObject);
{Печать}
var
i, j: integer;
PText: TextFile;
begin
inherited;
if PrintDialog1.Execute then
begin
AssignPrn(PText);
Rewrite(PText);
try
Printer.Canvas.Font:= Tabl.Font;
for i:= 0 to Tabl.RowCount-1 do
begin
for j:= 0 to Tabl.ColCount-1 do
write(PText, Tabl.Cells[j, i]);
writeln(PText);
end;
finally
CloseFile(PText);
end;
end;
end;
end.
________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.