Помощь - Поиск - Пользователи - Календарь
Полная версия: матрица
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Hazy
Дана матрица m на n. Найти максимум в каждой строке. Отсортировать эти максимумы по убыванию в матрице. Указать, какое количество максимумов находится в каждом столбце.


Проблемка возникла при сортировке максимумов, помогите пожалуйста.
klem4
1) Пользуйся поиском + FAQ Матрицы

2)Наверное отсортировать строки в соответствии с максимумами ?
volvo
Цитата(Hazy @ 17.06.05 18:01)
Проблемка возникла при сортировке максимумов, помогите пожалуйста.

Пожалуйста... Только сначала расскажи, ты хранишь максимумы в каком-то отдельном массиве или запоминаешь их индексы? Невозможно же обо всем догадываться...

Если же максимумы не в дополнительном массиве, тебе придется еще уточнить, что значит "сортировать максимумы"... Что при этом происходит со строками?
Hazy
Цитата(volvo @ 17.06.05 18:05)
Пожалуйста... Только сначала расскажи, ты хранишь максимумы в каком-то отдельном массиве или запоминаешь их индексы?


я храню максимумы в отдельном массиве, сортировать же нужно только элементы относящиеся к максимуму остальные элементы массива должны оставаться на своем месте
volvo
Вот тебе матрица (исходная):
1 2 3 6 5 3
0 8 3 2 1 0
3 0 4 2 5 7
1 2 2 1 9 1
Какая из нее должна получиться в результате?

Вот массив максимумов: <6 8 7 9> Что с ним надо делать?
Hazy
1 2 3 9 5 3
0 8 3 2 1 0
3 0 4 2 5 7
1 2 2 1 6 1


Вот такая должна получиться.
volvo
Ну, так тебе же нужно заводить 2 массива, и в одном хранить сами макс. элементы, а в другом - их индексы... И потом - вот так:
Var
arrMax, { это - сами макс элементы }
arrIndex, { это - те позиции в строке, на которых они находятся }
: Array[1 .. m] of integer;
... { заполняешь arrMax и arrIndex }

{ сортируешь "пузырьком" по убыванию }
For i := 1 To m Do
For j := m DownTo i Do
If arrMax[Pred(j)] < arrMax[j] Then Begin
T := arrMax[Pred(j)]; arrMax[Pred(j)] := arrMax[j]; arrMax[j] := T;
End;

{ и переносишь отсортированные элементы на их старые места: }
For i := 1 To m Do
matrix[i, arrIndex[i]] := arrMax[i];

Вот и все... smile.gif
klem4
А это по заданию надо максимумы хранить в отдельном массиве, или это ты так решил сделать ?

просто можно без него.
Hazy
Цитата(klem4 @ 17.06.05 22:30)
А это по заданию надо максимумы хранить в отдельном массиве, или это ты так решил сделать ?

да нет, просто я так решил.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.