Показать сообщение отдельно
  #10  
Старый 07.05.2010, 20:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да чего ж там непонятно-то???
Надо по диагонали матрицы вывести максимальные элементы соотв. строки.

Код:
type
  TMatrix = Array [1..3,1..3] Of Integer;

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
    Matrix : TMatrix;
    procedure MatrixOut(AMatrix : TMatrix);
  public
    { public declarations }
  end; 

var
  Form1: TForm1; 

implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var
  I, J : Integer;
begin
  For I := 1 To 3 Do
    For J := 1 To 3 Do
      Matrix[I,J] := Random(90) + 10;
end;

procedure TForm1.MatrixOut(AMatrix: TMatrix);
var
  I, J : Integer;
begin
  For I := 1 To 3 Do
    For J := 1 To 3 Do
      StringGrid1.Cells[J-1,I-1] := IntToStr(AMatrix[I,J]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MatrixOut(Matrix);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  _Matrix : TMatrix;
  I, J : Integer;
  _MaxIdx : Integer;
  _Swap : Integer;
begin
  For I := 1 To 3 Do
    For J := 1 To 3 Do
      _Matrix[I,J] := Matrix[I,J];

  For I := 1 To 3 Do
    Begin
      _MaxIdx := 1;
      For J := 2 To 3 Do
        If _Matrix[I,_MaxIdx] < _Matrix[I,J]
          Then _MaxIdx := J;
      If _MaxIdx <> I  Then
        Begin
          _Swap := _Matrix[I,I];
          _Matrix[I,I] := _Matrix[I,_MaxIdx];
          _Matrix[I,_MaxIdx] := _Swap;
        end;
    End;

  MatrixOut(_Matrix);
end;       

Все, весь код.
Ответить с цитированием