МАТРИЦА В ДЕЛЬФИ СОЗДАТЬ

СяваР

В Delphi написать программу, которая может для матрицы 3х3 вычислить определитель матрицы А, количество отрицательных элементов в матрице В, произведение положительных элементов в матрице С. Если такая прога есть скиньте, заранее благодарю.
1 ответ

СяваР

Примерно так:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    procedure Button1Click(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
  Procedure Install();   // Ввод массивов
  Procedure Print();     // Ввод массивов в таблицы
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  A,B,C: array of array of Integer;  //Исходные массивы
  Ai,Aj,Bi,Bj,Ci,Cj : Byte  ;       //Размеры исходных массивов
 
implementation
 
{$R *.dfm}
 
Procedure TForm1.Install();     //Ввод данных в массив
var
  i,j: Byte;
begin
Ai:=StrToInt(Edit1.text);
Aj:=StrToInt(Edit2.text);
Bi:=StrToInt(Edit3.text);
Bj:=StrToInt(Edit4.text);
Ci:=StrToInt(Edit5.text);
Cj:=StrToInt(Edit6.text);
SetLength(A,Ai,Aj);
SetLength(B,Bi,Bj);
SetLength(C,Ci,Cj);
 
For i:=0 to (Ai-1) do
  For j:=0 to (Aj-1) do
    A[i,j]:=Random(10)-Random(10);
 
 For i:=0 to (Bi-1) do
  For j:=0 to (Bj-1) do
    B[i,j]:=Random(10)-Random(10);
 
For i:=0 to (Ci-1) do
  For j:=0 to (Cj-1) do
    C[i,j]:=Random(10)-Random(10);
end;
 
Procedure TForm1.print();       // Ввод данных в таблицу
var
  i,j: Byte;
begin
    For i:=0 to  (Ai-1) do
      For j:=0 to (Aj-1) do
        StringGrid2.Cells[j,i]:=IntToStr(A[i,j]);
 
    For i:=0 to  (Bi-1) do
      For j:=0 to (Bj-1) do
        StringGrid1.Cells[j,i]:=IntToStr(B[i,j]);
 
    For i:=0 to  (Ci-1) do
      For j:=0 to (Cj-1) do
        StringGrid3.Cells[j,i]:=IntToStr(C[i,j]);
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j: Byte;
  k: Integer;
  t: LongInt;
  o:integer;
begin
  Install();
  k:=0;
  t:=1;
 
  // Вычисление количества отрицательных элементов матрицы В
 
    For i:=0 to (Bi-1) do
      For j:=0 to (Bj-1) do
        If B[i,j]<0 then k:=k+1;
 
  //Вычисление произведения положительных элементов матрицы С
 
    For i:=0 to (Ci-1) do
      For j:=0 to (Cj-1) do
        If C[i,j]>0 then t:=t*C[i,j];
 
  //Определение определителя матрицы А
      For i:=0 to (Bi-1) do
        For j:=0 to (Bj-1) do
  Print();
  ShowMessage ('В матрице В '+IntTostr(k)+' отрицательных элементов');
  ShowMessage ('Произведение положительных элементов матрицы С '+IntTostr(t));
end;
end.
Определитель для динамического массива напишу позже.Для определителя матрицы 3х3 можешь: - удалить цикл - написать
о= A[0,0]*A[1,1]*A[2,2]-A[1,1]*A[2,3]*A[3,2]-A[1,2]*A[2,1]*A[3,3]+A[1,2]*A[2,3]*A[3,1]+A[1,3]*A[2,1]*A[3,2]-A[1,3]*A[2,2]*A[3,1]