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

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

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

> Сквозная сортировка, что такое сквозная сортировка
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Сергей

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


Есть ли какой-то алгоритм так называемой сквозной сортировки 2-мерного массива.
например:
2 4 8
5 2 3
3 7 1
в рез-те должно отсортировать так:
1 3 5
2 3 7
2 4 8
И разложение данного массива в одномерный, а потом сортировка его и опять запись в 2-мерный - не катит.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Приведение матрицы к массиву - ты говоришь компилятору, что "на те данные, которые я раньше описал, как матрицу, в этом случае нужно смотреть, как на одномерный массив"... То есть, ФАКТИЧЕСКИ, никаких преобразований матрицы в одномерный массив не производится, ФИЗИЧЕСКИ ты работаешь с той же матрицей, так что, по-моему, приведенное тобой условие нигде не нарушается.

Как сделать? Ну, например, вот так:
const
size_x = 3;
size_y = 3;

type
column = array[1 .. size_y] of integer;
matrix = array[1 .. size_x] of column;

pvector = ^vector;
vector = array[1 .. maxInt div sizeof(integer)] of integer;

const
{ ВНИМАНИЕ: Заполнение матрицы - не построкам, а по столбцам !!! }
a: matrix = (
(2, 5, 3), { 1 столбец }
(4, 2, 7), { 2 столбец }
(8, 3, 1) { 3 столбец }
);

procedure print(const mx: matrix);
var i, j: integer;
begin
for i := 1 to size_x do begin
for j := 1 to size_y do
write(mx[j][i]:4);
writeln;
end;
end;

procedure bubble(var ar: vector; n: integer);
var i, j, T: Integer;
begin
for i := 1 to n do
for j := n downto i + 1 do
if ar[Pred(j)] > ar[j] then begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
end
end;

begin
writeln('before:');
print(a);

bubble(pvector(@a)^, size_x * size_y);

writeln('after:');
print(a);
end.
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 4.05.2024 4:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name