Массив размером MxN (M,N<=10) заполняется целыми числами из входного текстового файла. Исходный массив распечатывается. Строку, где расположен максимальный элемент массива, упорядочить по убыванию методом обмена. Переделанный массив распечатать.
Никак не могу упорядочить, кучу разных вариантов перепробовал - все равно не работает... Помогите, пожалуйста, исправить ошибки.
Sort.PAS ( 1.26 килобайт )
Кол-во скачиваний: 418
Свой код:
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);
Спасибо, сортирует теперь правильно
Но я заметил, что ответ получается нормальный, если массив квадратный, а если нет - то в результате столько чисел, сколько в массиве строчек. Например, если массив 3x5, то в ответе будет не 5 чисел, а только 3. Как бы это исправить?
Ну конечно... В том коде, который я привел везде поменяй M на N, потому что сортировать надо столько чисел, сколько в матрице столбцов, а число столбцов - это N (я как всегда проверял на квадратной матрице, поэтому не заметил)...
Поменял, теперь все правильно.
Большое спасибо!