Поменять местами элементы матрицы - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Поменять местами в двумерном массиве: в каждом столбце первый принадлежащий отрезку [a, b] и первый отрицательный элементы; Помогите пожалуйста, с меня спасибо.

Решение задачи: «Поменять местами элементы матрицы»

textual
Листинг программы
Program Matrix;
 
uses Crt;
var mas : array [1..10,1..10] of integer;
    x, a, b : integer;
    i, j, j_1, j_2, k_1, k_2, m, n : byte;
    
BEGIN
     ClrScr;
     Write('Введите диапазон: ');
     Read(a, b);
     Write('Количество строк массива: ');
     ReadLn(m);
     Write('Количество столбцов массива: ');
     ReadLn(n);
     for i:=1 to m do
     begin
          WriteLn('Введите ', n, ' чисел:');
          for j:=1 to n do
              Read(mas[i, j]);
     end;
     // вывод массива
     WriteLn('Исходный массив:');
     for i:= 1 to m do
     begin
         for j:=1 to n do
             Write(mas[i, j]:4);
         WriteLn
     end;
     //сортировка
     Writeln;
     for j:=1 to n do
     begin
         for i:=1 to m do
         begin
              if (mas[i,j]<0) and (mas[i,j]=a) then break;
              // Если первый отрицательный = первому элементу диапазона, то
              // выход из цикла for i т.е. переходим на следующий столбец
              if (mas[i,j]<0) and (j_1 < 1) then
              begin
                   Inc(j_1);
                   if(j_2 = 1) then
                   begin
                        mas[k_2,j]:=mas[i,j];
                        mas[i,j]:=x;
                   end
                   else
                   begin
                        k_1:=i;
                        x:=mas[i,j];
                   end
              end;
              if (mas[i,j]>=a) and (mas[i,j]<=b) and (j_2 < 1)then
              begin
                   Inc(j_2);
                   if(j_1 = 1) then
                   begin
                        mas[k_1,j]:=mas[i,j];
                        mas[i,j]:=x;
                   end
                   else
                   begin
                        k_2:=i;
                        x:=mas[i,j];
                   end
              end
         end;
     j_1:=0;
     j_2:=0;
     end;
     // вывод массива
     WriteLn('Искомый массив:');
     for i:= 1 to m do
     begin
         for j:=1 to n do
             Write(mas[i, j]:4);
         WriteLn
     end;
END.

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

В данном коде происходит следующее:

  1. Запрашивается диапазон чисел для заполнения матрицы.
  2. Запрашивается количество строк и столбцов матрицы.
  3. Заполняется матрица заданными числами.
  4. Выводится исходная матрица.
  5. Матрица сортируется по возрастанию.
  6. Для каждой строки матрицы выполняется проверка: если все элементы строки отрицательны и равны заданному диапазону, то происходит переход на следующий столбец.
  7. Если условие из п.6 выполняется, то происходит обмен элементов текущей строки и следующего столбца.
  8. Выводится отсортированная матрица.

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


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

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

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