Другие языки программирования и технологии

помогите, пожалуйста!! ! Delphi

Задана матрица размером NxM. Упорядочить ее строки по неубыванию суммы элементов в строках.
unit N91866057;

interface

uses
  Windows, SysUtils, Forms, Classes, Controls, StdCtrls, Grids;

type
  TArray = array of array of integer;

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure SetStringGrid(Sender: TObject; a: TArray);
    function Sum(a: TArray; n: integer): integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.Sum(a: TArray; n: integer): integer;
var i: integer;
begin
  Result := 0;
  for i := 0 to High(a[0]) do
    inc(Result, a[n, i]);
end;

procedure TForm1.SetStringGrid(Sender: TObject; a: TArray);
var
  k, x, n, m: integer;
begin
  with (Sender as TStringGrid) do
  begin
    n := length(a);
    m := length(a[0]);
    RowCount := n;
    ColCount := m;
    x := 200 div n;
    Height := x * n + 10;
    for k := 0 to n - 1 do
      RowHeights[k] := x;
    x := 425 div m;
    Width := x * m + 10;
    for k := 0 to m - 1 do
      ColWidths[k] := x;
    for k := 0 to n - 1 do
      for x := 0 to m - 1 do
        Cells[x, k] := IntToStr(a[k, x])
  end
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  N, M, i, j, k, t: integer;
  A: TArray;
begin
  if TryStrToInt(Edit1.Text, N) and TryStrToInt(Edit2.Text, M) then
  begin
    setlength(A, N, M);
    for i := 0 to N - 1 do
      for j := 0 to M - 1 do
        A[i, j] := random(101) - 50;
    SetStringGrid(StringGrid1, A);
    for i := 0 to N - 2 do
    begin
      k := i;
      for j := i + 1 to N - 1 do
        if Sum(A, j) < Sum(A, k) then
          k := j;
      if k <> i then
        for j := 0 to M - 1 do
        begin
          t := A[i, j];
          A[i, j] := A[k, j];
          A[k, j] := t
        end
    end;
    SetStringGrid(StringGrid2, A);
  end
  else
  begin
    MessageBox(0,'Введите корректные размеры матрицы',
      'Ошибка', MB_ICONERROR or MB_APPLMODAL or MB_OK);
    Edit1.SetFocus
  end
end;

initialization
  randomize;

end.

Арстан Токторалы Уулу
Арстан Токторалы Уулу
51 590
Лучший ответ
Могу сделать, пишите в личку
Erjik Arzibekov
Erjik Arzibekov
34 701
а зачем это тебе?
Иван Тараз
Иван Тараз
1 204