Поменять местами в каждой строке наибольший нечетный по значению и последний положительный элементы - 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.

Объяснение кода листинга программы

  1. В процедуре In_Mas создается массив A и заполняется случайными числами от plow до phight.
  2. В процедуре Out_Mas числа в каждой строке массива A записываются в консоль.
  3. В процедуре Sort массив A сортируется по возрастанию нечетных чисел и по убыванию положительных чисел.
  4. Переменные i, j, key, x используются для сравнения чисел в массиве A и обмена наибольшего нечетного числа и последнего положительного числа.
  5. Переменная temp используется для временного хранения наибольшего нечетного числа.
  6. Переменные high и low задают границы диапазона случайных чисел.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы