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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2009, 18:12   #1
Kion
 
Регистрация: 06.10.2009
Сообщений: 4
Вопрос Сортировка массива (Pascal)

Нужно произвести сортировку массива, состоящего из 16 элементов (заполняется случайными числами), - по убыванию.
Сортировка должна производится методом, который показан на рисунке:



Тоесть в правой верхней ячейке будет первый элемент (самый маленький), а в левом нижнем - последний (самый большой);
Советуется использовать одномерный массив.

если элементы сортировать по порядку по типу:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16


то можно сортировать по убыванию следующим способом:
Код:
const n = 16;
var data:array[1..n] of integer;
	tag,tagz,postuses:integer;
begin
randomize;
 for tag:=1 to n do 
  data[tag]:= random(99);
writeln('initial array:  ');
 for tag:=1 to n do Write(data[tag],' ');

 for tag:=1 to n-1 do 
  for tagz:=tag+1 to n do
   if data[tag] < data[tagz] then begin
					 	postuses:= data[tag]; 
				 	data[tag]:= data[tagz]; 
			 	data[tagz]:= postuses;
		   		 	end;
writeln;
writeln('final array:  ');
 for tag:=1 to n do write(data[tag],' ');
readln;
end.
но как автоматизировать сортировку массива по указанному пути? возможно существует какая-нибудь закономерность.
если вдруг у кого-нибудь появятся идеи, любые, я буду очень рад услышать. Заранее Спасибо.
Kion вне форума Ответить с цитированием
Старый 06.10.2009, 18:54   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Очень простая закономерность: ДИАГОНАЛИ. A[X,Y] A[X+1,Y+1] и пр.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 07.10.2009, 16:44   #3
Kion
 
Регистрация: 06.10.2009
Сообщений: 4
По умолчанию

спасибо. а как потом сравнивать значения из одной диагонали со значениями из другой? и получается нужно использовать двумерный массив?
Kion вне форума Ответить с цитированием
Старый 07.10.2009, 17:35   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Да, можно использовать 2-х мерный, но и одномерный можно сделать: Y:=ALL Div 4
X:=ALL Mod 4
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 07.10.2009, 23:34   #5
Kion
 
Регистрация: 06.10.2009
Сообщений: 4
По умолчанию

большое спасибо! что-то начинает в голове проясняться, буду пытаться дальше...

а потом эти координаты складывать? (если с одномерным массивом)

блин, ничего не выходит(((

Последний раз редактировалось Stilet; 09.10.2009 в 09:17.
Kion вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива символов(Turbo Pascal 7.0)) Rankin Помощь студентам 4 12.01.2010 17:02
сортировка массива Dimati87 Паскаль, Turbo Pascal, PascalABC.NET 6 03.06.2009 09:17
[pascal]Сортировка массива методом прямого выбора, работает неадекватно. fatoldsun Помощь студентам 7 22.04.2009 19:42
Сортировка массива методом вставок Pascal bpystep Помощь студентам 5 22.04.2009 01:13
Pascal - сортировка массива(файла?) kossner Помощь студентам 14 05.12.2008 14:57