Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на сортировку методом обмена

Автор: Nikeas 7.04.2007 21:43

Массив размером MxN (M,N<=10) заполняется целыми числами из входного текстового файла. Исходный массив распечатывается. Строку, где расположен максимальный элемент массива, упорядочить по убыванию методом обмена. Переделанный массив распечатать.

Никак не могу упорядочить, кучу разных вариантов перепробовал - все равно не работает... Помогите, пожалуйста, исправить ошибки.
Прикрепленный файл  Sort.PAS ( 1.26 килобайт ) Кол-во скачиваний: 418

Автор: volvo 7.04.2007 21:52

Свой код:

begin
B[i]:=A[Imax,j];
for i:=1 to M do
for j:=M downto i+1 do
if B[i] < B[i+1] then begin
T:=B[i];
B[i]:=B[i+1];
B[i+1]:=T
end
end;
Меняешь на:
  begin
for i:=1 to M do
for j:=M downto i+1 do
if A[imax, j] < A[imax, j-1] then begin
T:=A[imax, j]; A[imax, j]:=A[imax, j-1]; A[imax, j-1]:=T
end
end;

, и при выводе данных в файл-результат:
for i:=1 to M do
write(Fout,A[imax, i]:2);

В остальном все работает...

Автор: Nikeas 8.04.2007 15:34

Спасибо, сортирует теперь правильно smile.gif
Но я заметил, что ответ получается нормальный, если массив квадратный, а если нет - то в результате столько чисел, сколько в массиве строчек. Например, если массив 3x5, то в ответе будет не 5 чисел, а только 3. Как бы это исправить?

Автор: volvo 8.04.2007 15:53

Ну конечно... В том коде, который я привел везде поменяй M на N, потому что сортировать надо столько чисел, сколько в матрице столбцов, а число столбцов - это N (я как всегда проверял на квадратной матрице, поэтому не заметил)...

Автор: Nikeas 8.04.2007 16:56

Поменял, теперь все правильно.
Большое спасибо!