Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 14:40   #1
gamezeldol
 
Регистрация: 14.06.2011
Сообщений: 7
По умолчанию Программа сортировка по убыванию

Сама программа находится во вложенном файле.
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.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.05.2012 в 15:18.
gamezeldol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива по убыванию nanoDesu Паскаль, Turbo Pascal, PascalABC.NET 4 19.12.2011 15:46
Сортировка TAdoTable по убыванию mm_mauser БД в Delphi 8 05.12.2007 12:37
Сортировка по убыванию Костя БД в Delphi 3 20.11.2007 08:37
1. Сортировка Шелла по убыванию 2. Сортировка вставками по убыванию Arkuz Помощь студентам 1 25.09.2007 17:16