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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 20:01   #1
menX
 
Регистрация: 16.04.2009
Сообщений: 5
По умолчанию сортировка в Delphi

Здравствуйте! Скажите почему оно не сортиру, за сортировку отвичает кнопка Button3

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    XPManifest1: TXPManifest;
    BitBtn1: TBitBtn;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;  n,i,j:Integer;    tmp:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin


For i:=0 to StringGrid1.ColCount-1 do
StringGrid1.Cells[i,0]:=IntToStr(random(30));
end;

procedure TForm1.Button2Click(Sender: TObject);
var S:Integer;
begin
For i:=0 to StringGrid1.ColCount-1 do
S:=S+StrToInt(StringGrid1.Cells[i,0]);
StringGrid1.Cells[1,1]:=IntToStr(S);
StringGrid1.Cells[0,1]:='сумма';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
for i:=1 to n-1 do
for j:=1 to i do
if StringGrid1.Cells[i,j]>StringGrid1.Cells[i,j+1] then
begin
tmp:=StringGrid1.Cells[i,j];
StringGrid1.Cells[i,j]:=StringGrid1.Cells[i,j+1];
StringGrid1.Cells[i,j+1]:=tmp;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=n;
end;

end.
menX вне форума Ответить с цитированием
Старый 16.04.2009, 20:23   #2
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

А что есть n? А может оно вообще не инициализуется? В Edit1.text есть какое-нибудь значение?
Кто бы ты ни был - не думай о себе слишком (с)
DM_bite вне форума Ответить с цитированием
Старый 16.04.2009, 20:51   #3
menX
 
Регистрация: 16.04.2009
Сообщений: 5
По умолчанию

n символизирует количество ячеек, правда, наверное, я его немного не там описал, но это не меняет сути, так как массив не сортируется

Вот так пожалуй правильнее

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    XPManifest1: TXPManifest;
    BitBtn1: TBitBtn;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;  n,i,j:Integer;    tmp:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
n:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=n;

For i:=0 to StringGrid1.ColCount-1 do
StringGrid1.Cells[i,0]:=IntToStr(random(30));
end;

procedure TForm1.Button2Click(Sender: TObject);
var S:Integer;
begin
For i:=0 to StringGrid1.ColCount-1 do
S:=S+StrToInt(StringGrid1.Cells[i,0]);
StringGrid1.Cells[1,1]:=IntToStr(S);
StringGrid1.Cells[0,1]:='сумма';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
for i:=1 to n-1 do
for j:=1 to i do
if StringGrid1.Cells[i,j]>StringGrid1.Cells[i,j+1] then
begin
tmp:=StringGrid1.Cells[i,j];
StringGrid1.Cells[i,j]:=StringGrid1.Cells[i,j+1];
StringGrid1.Cells[i,j+1]:=tmp;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=n;
end;

end.
menX вне форума Ответить с цитированием
Старый 17.04.2009, 22:47   #4
menX
 
Регистрация: 16.04.2009
Сообщений: 5
По умолчанию

разобрался! тема закрыта.
menX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка... Delphi Devi_dark Помощь студентам 2 11.04.2009 20:29
Сортировка в Delphi Mango Помощь студентам 5 07.01.2009 05:47
Сортировка[Delphi] sergey31 Помощь студентам 13 29.05.2008 23:30