IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Трёхмерный массив! HELP!, Сортировка по возрастанию (я это даже предствить не могу)
klik1602
сообщение 13.01.2011 1:10
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Женский
Реальное имя: Натали

Репутация: -  1  +


Помогите пожалуйста! что-то совсем голова не варит((
Требуется отсортировать трёхмерный массив по возрастанию.
как я понимаю, проще это будет сделать, преобразовав данный массив в одномерный.
Подскажите, как выполнить преобразование?!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klik1602
сообщение 13.01.2011 18:54
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Женский
Реальное имя: Натали

Репутация: -  1  +


Дан трёхмерный массив. Расположите его элементы по возрастанию
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 14.01.2011 6:22
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(klik1602 @ 13.01.2011 18:54) *
Дан трёхмерный массив. Расположите его элементы по возрастанию

klik1602, от тебя пытаются добиться вдоль чего сортировать. С одномернум массивом этого вопроса на возникает. Легко сказать, какая точка больше и какая меньше, если они на отрезке или даже на целой прямой. А вот попробуй сравни так две точки на плоскости (или в трехмерном пространстве). Поэтому всегда нужно указывать, вдоль чего ты сортируешь. Например, на плоскости ты можешь сказать, что сортировка по близости к какому-то центру. Это будет первый уровень сортировки, а второй - внутри окружностей (все точки которых находятся на одинаковом расстоянии от центра), там можно сортировать по углу.

Тут, я думаю, тебе нужна сквозная сортировка по слоям-строкам-элементам. Слой - это первый индекс, строка - второй, элементы - третий. Сквозная сортировка подразумевает, что ВСЕ элементы преддыдущего слоя не превосходят элементов следующего. В каждом слое - то же самое по строкам. А в каждой строке - поэлементно. Такая сортировка выглядит вполне естественно, но все же есть неоднозначность, и вопросы к тебе были совешенно законны. Например, можно сортировать элемент-слой-строка. Или вообще какой-нить змейкой хитрой..

Если же тебе надо сквозную сортировку слой-строка-элемент, то все довольно просто. Поскольку этот порядок совпадает с порядком организации трехмерного массива в памяти, то можно просто отсортировать всю эту область как большой одномерный массив. Например, вот так:
type
tElement= integer;

const
n= 3;
m= 6;
k= 8;
l= n*m*k;

var
a: array [1..n,1..m,1..k] of integer;
b: array [1..l] of integer absolute a;


procedure Show;
var
i,j,t: integer;
begin
for i:= 1 to n do begin
WriteLn(i,':');
for j:= 1 to m do begin
for t:= 1 to k do Write(a[i,j,t]:4);
WriteLn
end;
WriteLn
end
end;


var
i,j,t: integer;
buf: tElement;

begin
for i := 1 to n do
for j := 1 to m do
for t := 1 to k do
a[i, j, t] := Random(100)-49;

Show;

{ Сквозная сортировка }
for i:=2 to l do
for j:=l downto i do if b[j-1]>b[j] then begin
buf:= b[j-1];
b[j-1]:= b[j];
b[j]:= buf
end;

WriteLn('Отсортированный массив:');
Show;

ReadLn
end.

Что касается вывода, то он тоже организован по слоям.

Иногда в задаче требуется не прибегать к представлению массива как одномерного. Если у тебя как раз такой случай - скажи.
Удачи.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 15.07.2025 0:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"