Упорядочить элементы каждого столбца матрицы по возрастанию методом линейного выбора с обменом (по условию) - Free Pascal

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

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

Мне очень нужен программный код к такому заданию. Дана действительная матрица A(n*n) . Если сумма минимальных элементов каждой строки больше суммы минимальных элементов каждого столбца, то упорядочить элементы каждого столбца матрицы по возрастанию методом линейного выбора с обменом.В противном случае матрицу оставить без изменений.

Решение задачи: «Упорядочить элементы каждого столбца матрицы по возрастанию методом линейного выбора с обменом (по условию)»

textual
Листинг программы
uses  Crt;
const n=5;
type  Tmatr=array[1..n,1..n] of integer;
var   a:Tmatr;
      i,j,min,m,t,k,sum1,sum2:integer;
begin
      ClrScr;
       Writeln('Matrix A:');
        Writeln;
         Randomize;
       for i:=1 to n do
        begin
          for j:=1 to n do
           begin
             a[i,j]:=Random(50)+1;
             Write(a[i,j]:4);
           end;
          Writeln;
        end;
       Writeln;
        sum1:=0; sum2:=0;
         i:=1;
          repeat
             min:=MaxInt;
             for j:=1 to n do
              if a[i,j]<min
               then min:=a[i,j];
             sum1:=sum1+min;
             Inc(i);
          until i>n;
         j:=1;
          repeat
             min:=MaxInt;
             for i:=1 to n do
              if a[i,j]<min
               then min:=a[i,j];
             sum2:=sum2+min;
             Inc(j);
          until j>n;
       if sum1>sum2
        then
         begin
           j:=1;
           repeat
              for i:=1 to n-1 do
               begin
                 min:=a[i,j];
                 m:=i;
                 for t:=i+1 to n do
                  if a[t,j]<min
                   then
                    begin
                      min:=a[t,j];
                      m:=t;
                    end;
                 k:=a[m,j];
                 a[m,j]:=a[i,j];
                 a[i,j]:=k;
               end;
              Inc(j);
           until j>n;
           Writeln('Summa min strok > summi min stolbcov');
           Writeln('Matrix A:');
           Writeln;
           for i:=1 to n do
            begin
              for j:=1 to n do
               Write(a[i,j]:4);
              Writeln;
            end;
         end
        else
         Writeln('Summa min strok < summi min stolbcov');
      ReadKey;
end.

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

  1. Объявлены переменные: — a: массив типа Tmatr для хранения элементов матрицы; — i, j: индексы для обращения к элементам матрицы; — min, m, t, k, sum1, sum2: целочисленные переменные для выполнения операций сравнения и обмена; — n: константа для определения размера матрицы; — Crt: модуль для работы с консолью.
  2. Задана матрица случайными значениями от 1 до 50 с помощью функции Random и цикла for. Каждое значение матрицы выводится на экран с помощью функции Write.
  3. Вычисляются суммы min элементов каждой строки матрицы с помощью цикла repeat-until и вложенного цикла for. Переменная min обновляется при каждом проходе внутреннего цикла.
  4. Если сумма min элементов первого массива больше, чем второго, то выполняется блок кода, который меняет местами минимальные элементы строк с помощью вложенного цикла for и условного оператора if.
  5. Если условие из пункта 4 не выполняется, то выводится сообщение Summa min strok < summi min stolbcov с помощью функции Writeln.
  6. Если условие из пункта 4 выполняется, то выполняется блок кода, который меняет местами минимальные элементы строк с помощью вложенного цикла for и условного оператора if.
  7. После выполнения всех операций выводится сообщение Matrix A: и все элементы матрицы выводятся на экран с помощью цикла for и функции Write.
  8. В конце программы ожидается нажатие клавиши с помощью функции ReadKey.

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


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

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

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