Другие языки программирования и технологии

Помогите написать программу! Турбо Паскаль 7.0

1.Сортировка столбцов Упорядочить столбцы матрицы А по убыванию максимального среди нечетных чисел. Обратите внимание, что здесь переставляются сами столбцы, а не элементы внутри них. Матрица А предположим уже есть, что дальше?
Доброго времени суток.

Дальше надо находить максимальное среди нечетных чисел среди элементов столбца и осуществлять сортировку.

Как вариант, можно сделать так. Для удобства объявлено несколько процедур и функций: инициализация массива, вывод на экран, перестановка столбцов и получение максимального нечетного элемента столбца.

program Mass;
uses Crt;
const
N = 4;{число строк}
M = 5;{число столбцов}

type
Arr2 = array[1..N, 1..M] of Integer; {двухмерный массив целых чисел}

var A : Arr2;

{инициализации массива для проверки}
procedure InitMass;
var i, j : Integer;
begin
for i:=1 to N do
for j:=1 to M do A[ i,j ] := i*10+j; {десятки - номер строки, единицы - тстолбца}
end;

{выыдит массив на экран}
procedure ShowMass(A: Arr2; Title: String);
var
i, j : Integer;
begin
WriteLn(Title);
for i:=1 to N do begin
for j:=1 to M do Write(A[ i,j ]:3);
WriteLn;
end;
WriteLn;
end;

{перестановка столбцов}
procedure SwapCols(Col1, Col2: Integer);
var
j, T : Integer;
begin
for j:=1 to N do begin
T := A[j,Col1];
A[j,Col1] := A[j,Col2];
A[j,Col2] := T;
end;
end;

{возвращает максимальное нечетное число столбца}
function GetMaxOddFrom(Col: Integer): Integer;
var
MaxN, j : Integer;
begin
MaxN := 0;
for j:=1 to N do
if Odd(A[j,Col]) and (MaxN < A[j,Col]) then MaxN := A[j,Col];
GetMaxOddFrom := MaxN;
end;

var
i, j : Integer;
begin
ClrScr;

InitMass;
ShowMass(A, 'Source'); {выведем для контроля}

{сортировка по убываню пузырьком}
for i := 1 to M do
for j:=1 to M-i do
if GetMaxOddFrom(j)< GetMaxOddFrom(j + 1) then {если текущий элемент меньше следующего}
SwapCols(j, j+1); {переставим соответствующие столбцы}

ShowMass(A, 'Result); {покажем результат}

ReadLn;
end.

Удачи!
Андрей Кофан
Андрей Кофан
59 612
Лучший ответ
Сделай так:

Type TVec=array[1..100] of real;
var matr:array[1..100]of TVec; {Матрица - массив (строки) массивов (столбцов) }

и сможешь переставлять столбцы простым присваиванием. Остальное, я думаю, напишешь сам.