Показать сообщение отдельно
  #1  
Старый 07.05.2012, 14:44
gamezeldol gamezeldol вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 16
Репутация: 10
По умолчанию Программа по сортировке чисел

Сама программа находится во вложенном файле.
Button1 - Произвольный набор чисел, Button2 - Сортировка 2ого столбца по убыванию. Вопрос в том чтобы сортировка начиналась со второй строки. Чтобы 1ая строка вообще не задействовалась в этой операции. Т.к. cell[1,0] должна быть типа String. Спасибо за помощь
Код:
unit Unit1;

 interface

 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, StdCtrls;

 type
 TForm1 = class(TForm)
 Button1: TButton;
 Button2: TButton;
 StringGrid1: TStringGrid;
 procedure FormCreate(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;

 type
 a=array [1..5] of integer;
 m=array [1..5] of a;
 const
 n=5;

 var
 Form1: TForm1;
 mas:m;

 implementation

 {$R *.dfm}

 procedure refreshtable;
 var
 i,j:byte;
 begin
 for I := 1 to n do
 for j := 1 to n do
 form1.StringGrid1.Cells[j-1,i-1]:=inttostr(mas[i,j]); // тут укажи свою форму
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
 i,j:byte;
 s:integer;
 begin
 for I := 1 to n do begin
 s:=0;
 for j := 1 to n do begin
 mas[i,j]:=Random(100);
 s:=s+mas[i,j];
 end;
 StringGrid1.Cells[5,i-1]:=inttostr(s);
 end;
 refreshtable;
 end;


 function mySort(List: TStringList; first, second: Integer): Integer; // это функция сортировки
 function f(index: integer): integer;

 begin result := StrToInt(List.Strings[index]) end;

 begin

 result := f(second) - f(first)
 end;

 procedure TForm1.Button2Click(Sender: TObject);

 var
 ts: TStringList;
 i,j: integer;
 begin
 ts := TStringList.Create;

 try
 with StringGrid1 do
 begin
 ts.Assign(cols[1]); // Получаем элементы очередной строки
 ts.CustomSort(mySort); // сортируем их как числа по убыванию
 cols[1].Assign(ts); // возвращаем назад в Грид
 end;
 finally
 ts.Free;
 end;
 end;
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 Randomize;
 end;
 end.
Админ: Пользуемся тегами для оформления кода, иначе последуют санкции!
Вложения
Тип файла: rar сортировка.rar (190.3 Кбайт, 17 просмотров)
Ответить с цитированием