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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 01:17   #1
Dimati87
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 44
По умолчанию сортировка массива

есть массив состоящий из 5 строк 9 столбцов его нужно отсортировать так чтоб первая строка ровнялась последней строке а вторая предпоследней и т.д
Dimati87 вне форума Ответить с цитированием
Старый 03.06.2009, 06:08   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в общем случае (для любого массива) — это НЕВЫПОЛНИМАЯ (нерешаемая) задача!
Другое дело, если массив нужно не отсортировать, а заполнить!

Последний раз редактировалось Serge_Bliznykov; 03.06.2009 в 06:22.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.06.2009, 07:56   #3
Dimati87
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в общем случае (для любого массива) — это НЕВЫПОЛНИМАЯ (нерешаемая) задача!
Другое дело, если массив нужно не отсортировать, а заполнить!
Ну да нужно заполнить.
Dimati87 вне форума Ответить с цитированием
Старый 03.06.2009, 08:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот пример:
Код:
   var a:array[1..5,1..9] of byte; i,k:integer;
begin
 for i:=1 to 2 do begin
  for k:=1 to 9 do a[i,k]:=random(100);
  move(a[i,1],a[5-i+1,1],9);
 end;
 for i:=1 to 5 do begin
  for k:=1 to 9 do write(a[i,k]:4);
  writeln;
 end;
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Среднюю строку сам заполни.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2009, 08:36   #5
Dimati87
Пользователь
 
Регистрация: 04.03.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вот пример:
Код:
   var a:array[1..5,1..9] of byte; i,k:integer;
begin
 for i:=1 to 2 do begin
  for k:=1 to 9 do a[i,k]:=random(100);
  move(a[i,1],a[5-i+1,1],9);
 end;
 for i:=1 to 5 do begin
  for k:=1 to 9 do write(a[i,k]:4);
  writeln;
 end;
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Среднюю строку сам заполни.
спосибо за код. а можно попросить вас коменты к коду, а то я чегото не врубился.
Dimati87 вне форума Ответить с цитированием
Старый 03.06.2009, 08:47   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а то я чегото не врубился.
Можно. Чего именно не понятно?
Здесь все стандартное за исключением
move(a[i,1],a[5-i+1,1],9);
Это процедура копирующая побайтно участок памяти (читай массива) в другой участок, т.е. из a[i,1] скопируется 9 чисел на противоположную сторону.
Подробности в хелпе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2009, 09:17   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а я бы сделал в "лоб", без использования MOVE (для новичка сложновато... да и, потенциально, проблем может быть, если массив не будет храниться непоследовательно (это чисто умозрительное предположение )):
Код:
const N = 5;
var 
  a:array[1..N,1..9] of byte; 
  i,k:integer;
begin
 Randomize;

 for i:=1 to (N div 2) do 
  for k:=1 to 9 do begin 
    a[i,k]:=random(100);
    a[N-i+1,k] := a[i,k];
  end;

 {заполняем среднюю строчку 
   (если размерность массива нечётная, конечно!)}
 if odd(N) then
  for k:=1 to 9 do
    a[(N div 2)+1,k]:=random(100);
   

 {вывод матрицы}
 for i:=1 to N do begin
  for k:=1 to 9 do write(a[i,k]:4);
  writeln;
 end;
 readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива Cpluser Общие вопросы C/C++ 4 04.03.2009 23:57
Сортировка массива на Си Покемон Общие вопросы C/C++ 2 01.11.2008 08:24
Сортировка массива С/С++ Dagget Помощь студентам 1 16.07.2008 12:18
Сортировка массива Kraven Общие вопросы Delphi 3 25.06.2008 18:22
Сортировка массива RIO Помощь студентам 1 05.04.2008 17:39