Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на сортировку методом обмена
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Nikeas
Массив размером MxN (M,N<=10) заполняется целыми числами из входного текстового файла. Исходный массив распечатывается. Строку, где расположен максимальный элемент массива, упорядочить по убыванию методом обмена. Переделанный массив распечатать.

Никак не могу упорядочить, кучу разных вариантов перепробовал - все равно не работает... Помогите, пожалуйста, исправить ошибки.
Нажмите для просмотра прикрепленного файла
volvo
Свой код:
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
Спасибо, сортирует теперь правильно smile.gif
Но я заметил, что ответ получается нормальный, если массив квадратный, а если нет - то в результате столько чисел, сколько в массиве строчек. Например, если массив 3x5, то в ответе будет не 5 чисел, а только 3. Как бы это исправить?
volvo
Ну конечно... В том коде, который я привел везде поменяй M на N, потому что сортировать надо столько чисел, сколько в матрице столбцов, а число столбцов - это N (я как всегда проверял на квадратной матрице, поэтому не заметил)...
Nikeas
Поменял, теперь все правильно.
Большое спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.