Отсортировать каждый столбе матрицы с номером 2i по возрастанию элементов, а с номером 2i +1 по убыванию - Pascal ABC
Формулировка задачи:
Отсортировать каждый столбе матрицы с номером 2i по возрастанию элементов, а с номером 2i +1 по убыванию элементов методом вставки
Все отсортировать по убыванию или возрастанию получается, а конкретно столбцы нет, думаю тут должен быть if then else
Но куда его ставить и что должно быть условием мне не понятно
Решение задачи: «Отсортировать каждый столбе матрицы с номером 2i по возрастанию элементов, а с номером 2i +1 по убыванию»
textual
Листинг программы
type mas=array [1..10] of integer; //столбец
matr=array [1..10] of mas;//массив столбцов
procedure VvodMatr(var h:text; var x:matr; var n,m: integer);
var k,j:integer;
begin
assign(h,'input.txt');
reset(h);
read(h,n,m);
for k:=1 to n do //записываем матрицу по столбцам
for j:=1 to m do read (h,x[j][k]);
close(h);
end;
Procedure PrintMatr(var h:text;x: matr; n,m: integer);
var k,j: integer;
begin
assign(h,'output.txt');
rewrite(h);
writeln(h,n,' ',m);
for k:=1 to n do //выводим по строкам
begin
for j:=1 to m do write (h,x[j][k],' ');
writeln(h);
end;
close(h);
end;
procedure SortVsVz(var a:mas; n: integer);
var i,j,temp : integer;
begin
for i:=2 to n do
begin
temp:=a[i];
j:=i-1;
while (j>=1) and (a[j]>temp) do
begin
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=temp
end;
end;
procedure SortVsUb(var a:mas; n: integer);
var i,j,temp : integer;
begin
for i:=2 to n do
begin
temp:=a[i];
j:=i-1;
while (j>=1) and (a[j]<temp) do
begin
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=temp;
end;
end;
{Основная программа:}
var f:text;
a:matr;
n,m,i,j:integer;
begin
VvodMatr(f,a,n,m);
i:=1;
for j:=2 to m do
begin
if j=2*i then SortVsVz(a[j],n)
else if j=2*i+1 then
begin
SortVsUb(a[j],n);
i:=i+1;
end;
end;
PrintMatr(f,a,n,m);
end.
Объяснение кода листинга программы
Этот код написан на языке Pascal ABC и выполняет следующие действия:
- Создает переменные для хранения номера файла ввода и вывода, а также для хранения матрицы и ее столбцов.
- Зачитывает матрицу из файла ввода.
- Выводит информацию о размерах матрицы на экран.
- Реализует процедуры сортировки по возрастанию и по убыванию для каждого столбца матрицы.
- Записывает отсортированную матрицу в файл вывода. Примечание: В этом коде используется несколько вложенных циклов, но они не являются вложенными списками.