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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2011, 01:52   #1
Ника_1
Пользователь
 
Регистрация: 18.03.2011
Сообщений: 13
По умолчанию Сортировка массива в Delphi

Здраствуйте! У меня к вам вопрос, у меня в программе сортирует только первый столбец массива! Мне нужно сделать так, чтобы сортировало весь массив! Может знает кто, как это сделать, подскажите пожалуйста!!! Спасибо!

Код:
unit Unit1;

interface

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

type
  mas = array[1..100000] of integer;
  TForm1 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    Button1: TButton;
    StringGrid1: TStringGrid;
    GroupBox1: TGroupBox;
    UpDown1: TUpDown;
    XPManifest1: TXPManifest;
    LabeledEdit2: TLabeledEdit;
    UpDown2: TUpDown;
    Button2: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
  public

  end;

var
  Form1: TForm1;
  i,j,n,m1,k:integer;
  aa:array [1..200,1..200] of integer;
  aaa:mas;
implementation

{$R *.dfm}

Procedure hoar(l,r:integer; Var a:mas);
var i,j,m,tmp:integer;
begin
	if l < r then
           begin
	i:=l; j:=r;
	m:=a[i];
	repeat
           k:=k+1;
	while m<a[j] do
	j:=j-1;
	if  i<=j then
	begin
	tmp:=a[i]; a[i]:=a[j]; a[j]:=tmp;
	i:=i+1;
	end;
	while m>a[i] do
	i:=i+1;
	if  i<=j then
	begin
           tmp:=a[i]; a[i]:=a[j]; a[j]:=tmp;
	j:=j-1;
	end;
	until i>j;
	hoar(l, j, a);
	hoar(i, r, a);
	end;
           end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  n:=strtoint(labeledEdit1.text);
  m1:=strtoint(labeledEdit2.text);
  randomize;
  stringgrid1.ColCount:=m1;
  StringGrid1.RowCount:=n;
    for i:=0 to m1-1 do
    for j:=0 to n-1 do begin
    aa[i+1,j+1]:=random(56)+5;
    stringgrid1.Cells[i,j]:=inttostr(aa[i+1,j+1]);
end;
    stringgrid1.Visible:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
for j:=1 to n do
  aaa[j]:=strtoint(stringgrid1.cells[0,j-1]);
 k:=0;
hoar(1,n,aaa);
for i:=1 to n do
 stringgrid1.Cells[0,i-1]:=inttostr(aaa[i]);
end;
end.
Ника_1 вне форума Ответить с цитированием
Старый 13.11.2011, 02:08   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Конечно ) У тебя функция button2click заносит в массив aaa только первый столбец и потом сортирует его. Нужно дописать к ней второй вложенный цикл, чтобы учитывались значения и других столбцов )
Son Of Pain вне форума Ответить с цитированием
Старый 13.11.2011, 02:16   #3
Ника_1
Пользователь
 
Регистрация: 18.03.2011
Сообщений: 13
По умолчанию

Мне конечно очень стыдно об этом просить... может вы мне поможете написать этот вложенный цикл, а то я не знаю как делать(((
Ника_1 вне форума Ответить с цитированием
Старый 13.11.2011, 02:24   #4
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

А этот код ты сама писала? ) Тогда никаких сложностей быть не должно, по идее. Что конкретно вызывает затруднения?
Son Of Pain вне форума Ответить с цитированием
Старый 13.11.2011, 02:28   #5
Ника_1
Пользователь
 
Регистрация: 18.03.2011
Сообщений: 13
По умолчанию

Нет, не сама...у меня тут почти во всем затруднения...а как писать этот вложенный цикл понятия не имею...помогите пожалуйста, сдавать вот вот(((
Ника_1 вне форума Ответить с цитированием
Старый 13.11.2011, 02:41   #6
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Эх )
Ну как-то так
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
for i:=0 to m1-1 do
for j:=0 to n-1 do
aaa[i*n+j+1]:=strtoint(stringgrid1.cells[i,j]);
hoar(1,n*m,aaa);
for i:=0 to m1-1 do
for j:=0 to n-1 do
stringgrid1.Cells[i,j]:=inttostr(aaa[i*n+j+1]);
end;
Правда делфи тут нету, потому проверяй сама, может где-то ошибки есть.
Son Of Pain вне форума Ответить с цитированием
Старый 13.11.2011, 02:48   #7
Ника_1
Пользователь
 
Регистрация: 18.03.2011
Сообщений: 13
По умолчанию

оно сортирует весь массив, только правда получаются в каждом столбике одинаковые значения...счас приложу всю прогу!
Вложения
Тип файла: rar 15.rar (639.1 Кб, 12 просмотров)
Ника_1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива(Delphi 3.0) SUMR04 Помощь студентам 0 16.12.2009 19:09
Delphi. Сортировка массива eluminat Помощь студентам 4 30.06.2009 11:55