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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2012, 20:13   #1
Petyu
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 23
Сообщение Проблемы с сортировкой в delphi 7

вот код программы
Код:
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, jpeg, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  var a:array of array of integer;
   m,n:byte;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var i,j:byte;
begin
randomize;
//проверим правильно ли введены размеры
if (StrToIntDef(Edit1.Text,-1000)=-1000)
or (StrToIntDef(Edit2.Text,-1000)=-1000)
or (StrToInt(Edit1.Text)<1)or (StrToInt(Edit2.Text)<1)
then
 begin
  Showmessage('Неверно введены размеры матрицы');
  exit
 end; 
m:=StrToInt(Edit1.Text);
n:=StrToInt(Edit2.Text);
StringGrid1.RowCount:=m;
StringGrid1.ColCount:=n;
StringGrid2.RowCount:=m;
StringGrid2.ColCount:=n;
Setlength(a,m,n);
for i:=0 to m-1 do
for j:=0 to n-1 do
a[i,j]:=random(50)-20;
for i:=0 to m-1 do //заносим в таблицу наоборот
for j:=0 to n-1 do
StringGrid1.Cells[j,i]:=IntToStr(a[i,j]);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var i,j,k,x:integer;
begin
for k:=1 to n*m do  {повторяем сколько элементов в матрице}
for i:=0 to m-1 do
for j:=0 to n-1 do
 begin
  if j<>n-1 then {если элемент в строке не последний}
   begin
    if a[i,j+1]<a[i,j]
     then
      begin  {обмен элементов}
       x:=a[i,j+1];
       a[i,j+1]:=a[i,j];
       a[i,j]:=x;
      end;
      end;
StringGrid2.Cells[j,i]:=IntToStr(a[i,j]);
end;
end;
 
 
end.
при выполнении задания немного ошибся нужно было отсортировать массив по первым элементам столбца
пример дан массив
0 9 4
5 6 7
7 2 3
результат работы
0 4 9
5 7 6
7 3 2
а я отсортировал массив полностью подскажите пожалуйста как отсортировать по первым элементам столбца.
была идея сделать сортировку так:
Код:
.......................................................
 for i:=0 to n-1
 for j:=0 to m-1
 if a[0, j+1]<a[0,j] then
 begin
 for p:=0 to n-1
 t[p]:=a[p,j+1];
 a[p,j+1]:=a[0,j];
 a[0,j]:=t[p];
 .......................................................
но она не работает.
Помогите пожалуйста
Petyu вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с Delphi 7 на Windows 7 (delphi не принимает пути с кирилицей) unbanned Общие вопросы Delphi 12 16.04.2011 21:19
Проблемы с delphi 7 bestful Общие вопросы Delphi 10 01.06.2010 14:04
Проблемы в Delphi Николай ПН Помощь студентам 4 15.04.2010 21:57
Привет всем!Помогите пожалуйста с сортировкой файла в Delphi, заранее спасибо Taisja Помощь студентам 2 01.06.2008 15:42