Поменять местами в каждой строке наибольший нечетный по значению и последний положительный элементы - Pascal ABC
Формулировка задачи:
Дана задача:
Написать программу для решения следующей задачи. В двумерном массиве, состоящем из целочисленных элементов, поменять местами в каждой строке наибольший нечетный по значению и последний положительный элементы.
Смог сделать все условия,но вот поменять местами числа не могу.
Добавьте,пожалуйста,в мой код смену местами или исправьте,если что-то не так.
Решение задачи: «Поменять местами в каждой строке наибольший нечетный по значению и последний положительный элементы»
textual
Листинг программы
uses Crt;
const high = 20;
low = -10;
n = 2;
k = 4;
type massiv = array [1..n, 1..k] of integer;
var A : massiv;
Procedure In_Mas(var m:massiv; phight, plow : integer);
var i, j : byte;
Begin
for i:=1 to n do
for j:=1 to k do
m[i,j]:=plow+Random(phight-plow+1);
End;
Procedure Out_Mas(const m:massiv);
var i, j : byte;
Begin
for i:=1 to n do
begin
for j:=1 to k do
Write(m[i,j]:4);
WriteLn;
end;
End;
Procedure Sort(var m:massiv);
var i, j, key, x : byte;
temp, max : integer;
Begin
for i:=1 to n do
begin
key:=0;
for j:=1 to k do
begin
if ( (odd(m[i,j])) and (key=0) ) then
begin
key:=1;
max:=m[i,j];
x:=j;
end;
if ( (odd(m[i,j])) and (key=1) ) then
if (m[i,j]>max) then
begin
max:=m[i,j];
x:=j;
end;
end;
if ( (m[i,k]>0) and (m[i,k]<>m[i,x]) ) then
begin
temp:=m[i,x];
m[i,x]:=m[i,k];
m[i,k]:=temp;
end;
end;
End;
BEGIN
ClrScr;
Randomize;
In_Mas(A, high, low);
WriteLn('Исходный массив:');
Out_Mas(A);
Sort(A);
WriteLn;
WriteLn('Новый массив:');
Out_Mas(A);
END.
Объяснение кода листинга программы
- В процедуре In_Mas создается массив A и заполняется случайными числами от plow до phight.
- В процедуре Out_Mas числа в каждой строке массива A записываются в консоль.
- В процедуре Sort массив A сортируется по возрастанию нечетных чисел и по убыванию положительных чисел.
- Переменные i, j, key, x используются для сравнения чисел в массиве A и обмена наибольшего нечетного числа и последнего положительного числа.
- Переменная temp используется для временного хранения наибольшего нечетного числа.
- Переменные high и low задают границы диапазона случайных чисел.