Поменять местами в каждой строке наибольший нечетный по значению и последний положительный элементы - Pascal ABC
Формулировка задачи:
Дана задача:
Написать программу для решения следующей задачи. В двумерном массиве, состоящем из целочисленных элементов, поменять местами в каждой строке наибольший нечетный по значению и последний положительный элементы.
Смог сделать все условия,но вот поменять местами числа не могу.
Добавьте,пожалуйста,в мой код смену местами или исправьте,если что-то не так.
Листинг программы
- Var a:array[1..100,1..100] of integer; i,j,n,m,max,last:integer;t:integer;
- begin
- write ('Введите количество строк: ');
- read(n);
- writeln;
- write ('Введите количество элементов в строке: ');
- read(m);
- writeln('Введите массив: ');
- for i:=1 to n do begin
- for j:=1 to m do begin
- write(' a[',i,',',j,']=');
- read(a[i,j]);
- end;
- end;
- for i := 1 to M do begin
- for j := 1 to N do
- write (a[i,j]:5);
- writeln
- end;
- for i:=1 to n do begin
- max:=a[i,1];
- for j:=2 to m do begin
- if (a[i,j] mod 2) <> 0 then
- if (max<a[i,j]) then
- max:=a[i,j];
- end;
- write(max,' ');
- end;
- writeln;
- for i:=1 to n do begin
- last:=a[i,1];
- for j:=2 to m do begin
- if (last<a[i,j]) then
- last:=a[i,j];
- end;
- write(a[i,j],' ');
- end;
- end.
Решение задачи: «Поменять местами в каждой строке наибольший нечетный по значению и последний положительный элементы»
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 задают границы диапазона случайных чисел.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д