Программа


CONST QLine=4; {Количество строк матрицы}
      QCol=4;  {Количество столбцов матрицы}
TYPE Element=integer; {Тип элементов матриц}
     Lin=1..QLine; {Тип - интервал номеров строк}
     Col=1..QCol; {Тип - интервал номеров столбцов}
     Matrix=array[Lin,Col] of Element; {Тип - матрица}
PROCEDURE InputMatrix(var M:Matrix); {Ввод матрицы}
  Var i:Lin; {Счетчик строк}
      j:Col; {Счетчик столбцов}
  Begin
    WriteLn; {Пропуск строки}
    WriteLn('ВВОД МАТРИЦЫ:'); {Вывод приглашения ко вводу матрицы}
    for i:=1 to QLine do {Цикл ввода строк}
      for j:=1 to QCol do {Цикл ввода строки}
      begin
        Write('Ведите элемент [',i,',',j,'] '); {Вывод приглашения}
        ReadLn(M[i,j]) {Ввод элемента матрицы}
      end;
    WriteLn; {Пропуск строки}
  End;
PROCEDURE OutputMatrix(var M:Matrix); {Вывод матрицы}
  Var i:Lin; {Счетчик строк}
      j:Col; {Счетчик столбцов}
  Begin
    WriteLn; {Пропуск строки}
    WriteLn('МАТРИЦА:'); {Вывод заголовка}
    for i:=1 to QLine do {Цикл вывода строк}
    begin
      for j:=1 to QCol do {Цикл вывода строки}
        Write(M[i,j]:3,' '); {Вывод элемента}
      WriteLn {Вывод конца строки}
    end;
    WriteLn; {Пропуск строки}
  End;
FUNCTION Sum(A:Matrix; C:Col):Element; {Функция подсчета суммы элементов столбца}
  Var S:Element; {Сумма}
      i:Col; {Счетчик строк}
  Begin
    S:=0; {Начальное определение суммы}
    for i:=1 to QLine do {Цикл просмотра столбца}
      S:=S+A[i,C]; {Набор суммы}
    Sum:=S {Определение значения функции}
  End;
PROCEDURE SwopColumn(var M:Matrix; A,B:Col); {Перестановка столбцов матрицы}
  Var i:Lin; {Счетчик строк}
      Buf:Element; {Буфер обмена}
  Begin
    for i:=1 to QLine do {Цикл перестановки столбцов}
    begin
      {Перестановка элементов:}
      Buf:=M[i,A];
      M[i,A]:=M[i,B];
      M[i,B]:=Buf;
    end
  End;
PROCEDURE SortColumn(var A:Matrix); {Процедура сортировки столбцов матрицы}
  Var i,j:Col; {Счетчики столбцов}
      SwopColNum:Col; {Номер столбца с минимальной суммой элементов}
  Begin
    for i:=1 to QCol-1 do {Цикл сортировки}
    begin
      SwopColNum:=i; {Начальное определение номера столбца}
      for j:=i+1 to QCol do {Цикл поиска столбца с минимальной суммой элементов}
        if Sum(A,j)<Sum(A,SwopColNum) {Сравнение сумм элементов столбцов}
        then SwopColNum:=j; {Переопределение номера столбца}
      SwopColumn(A,i,SwopColNum) {Перестановка столбцов}
    end
  End;
VAR B,C:Matrix; {Матрицы}
BEGIN
  InputMatrix(B);  {Ввод матрицы B}
  OutputMatrix(B); {Вывод матрицы B}
  C:=B;            {Определение матрицы C}
  SortColumn(C);   {Сортировка столбцов матрицы С}
  OutputMatrix(C); {Вывод матрицы С}
END.


  СХЕМА ПРОГРАММЫ

  ***************
 *               *
 *    П У С К    *
 *               *
  ***************
         :
         :
 *****************
 * *           * *
 * *InputMatrix* *
 * *           * *
 * *    (B)    * *
 * *           * *
 *****************
         :
         :
 *****************
 * *           * *
 * *  Output   * *
 * *  Matrix   * *
 * *    (B)    * *
 * *           * *
 *****************
         :
         :
         :
 *****************
 *               *
 *               *
 *     C:=B      *
 *               *
 *               *
 *****************
         :
         :
 *****************
 * *           * *
 * * SortColumn* *
 * *           * *
 * *    (C)    * *
 * *           * *
 *****************
         :
         :
 *****************
 * *           * *
 * *  Output   * *
 * *  Matrix   * *
 * *    (C)    * *
 * *           * *
 *****************
         :
         :
  ***************
 *               *
 *   К О Н Е Ц   *
 *               *
  ***************



  СХЕМА ПРОЦЕДУРЫ InputMatrix

  ***************
 *               *
 *    П У С К    *
 *               *
  ***************
         :
         :
 *****************  ┌─
 *               *  │
 *               *  │ Инициализация
 *     i:=1      *∙∙│
 *               *  │ счетчика цикла
 *               *  │
 *****************  └─
         :
         :∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
         :                                                        :
         :                                                        :
         :                                                        :
 *****************  ┌─                                            :
 *               *  │                                 ─┐  *****************
 *               *  │ Инициализация                    │  *               *
 *     j:=1      *∙∙│                  Переопределение │  *               *
 *               *  │ счетчика цикла                   │∙∙*    i:=i+1     *
 *               *  │                  счетчика цикла  │  *               *
 *****************  └─                                 │  *               *
         :                                            ─┘  *****************
         :                                                        :
         :                                                        :
         :                                                        :
         :                                                        :
         :∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙.                                 :
         :                      :                                 :
         :              *****************       ┌─                :
         :              *               *       │                 :
         :              *               *       │ Переопределение :
         :              *    j:=j+1     *∙∙∙∙∙∙∙│                 :
         :              *               *       │ счетчика цикла  :
         :              *               *       │                 :
         :              *****************       └─                :
         :                      :                                 :
         :                      :                                 :
         :                *****************     ┌─                :
         :                                      │ Ввод            :
         :               *               *      │                 :
         :                    M[i,j]     ∙∙∙∙∙∙∙│ элемента        :
         *              *               *       │                 :
       *   *                                    │ матрицы         :
     *       *         *****************        └─                :
   *           *   Нет          :                                 :
 *     j>QCol    *∙∙∙∙∙∙∙∙∙∙∙∙∙∙'                                 :
   *           *                                                  :
     *       *                                                    :
       *   *                                                      :
         *                                                        :
         : Да                                                     :
         :                                                        :
         *                                                        :
       *   *                                                      :
     *       *                                                    :
   *           *   Нет                                            :
 *    i>QLine    *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
   *           *
     *       *
       *   *
         *
         : Да
         :
         :
  ***************
 *               *
 *   К О Н Е Ц   *
 *               *
  ***************


  СХЕМА ПРОЦЕДУРЫ OutputMatrix

  ***************
 *               *
 *    П У С К    *
 *               *
  ***************
         :
         :
   *****************

  *    Вывод      *

 *   заголовка   *

*****************
         :
         :
 *****************  ┌─
 *               *  │
 *               *  │ Инициализация
 *     i:=1      *∙∙│
 *               *  │ счетчика цикла
 *               *  │
 *****************  └─
         :
         :∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
         :                                                        :
         :                                                        :
         :                                                        :
 *****************  ┌─                                            :
 *               *  │                                 ─┐  *****************
 *               *  │ Инициализация                    │  *               *
 *     j:=1      *∙∙│                  Переопределение │  *               *
 *               *  │ счетчика цикла                   │∙∙*    i:=i+1     *
 *               *  │                  счетчика цикла  │  *               *
 *****************  └─                                 │  *               *
         :                                            ─┘  *****************
         :                                                        :
         :                                                        :
         :                                                        :
         :                                                        :
         :∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙.                                 :
         :                      :                                 :
         :              *****************       ┌─                :
         :              *               *       │                 :
         :              *               *       │ Переопределение :
         :              *    j:=j+1     *∙∙∙∙∙∙∙│                 :
         :              *               *       │ счетчика цикла  :
         :              *               *       │                 :
         :              *****************       └─                :
         :                      :                                 :
         :                      :                                 :
         :                *****************     ┌─                :
         :                                      │ Вывод           :
         :               *               *      │                 :
         :                    M[i,j]     ∙∙∙∙∙∙∙│ элемента        :
         *              *               *       │                 :
       *   *                                    │ матрицы         :
     *       *         *****************        └─                :
   *           *   Нет          :                                 :
 *     j>QCol    *∙∙∙∙∙∙∙∙∙∙∙∙∙∙'                                 :
   *           *                                                  :
     *       *                                              *****************
       *   *
         *                                                 *    Вывод      *
         : Да                                                   конца
         :                                                *     строки    *
         *
       *   *                                             *****************
     *       *                                                    :
   *           *   Нет                                            :
 *     i>QLine   *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
   *           *
     *       *
       *   *
         *
         : Да
         :
         :
         :
   *****************

  *    Вывод      *
       конца
 *     строки    *

*****************
         :
         :
  ***************
 *               *
 *   К О Н Е Ц   *
 *               *
  ***************


  СХЕМА ПРОЦЕДУРЫ SortColumn


  ***************
 *               *
 *    П У С К    *
 *               *
  ***************
         :
         :
 *****************  ┌─
 *               *  │
 *               *  │ Инициализация
 *     i:=1      *∙∙│
 *               *  │ счетчика цикла
 *               *  │
 *****************  └─
         :
         :∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
         :                                                        :
         :                                                        :
 *****************  ┌─                                            :
 *               *  │                                             :
 *               *  │ Начальное                                   :
 * SwopColNum:=1 *∙∙│ определение                                 :
 *               *  │ номера                                      :
 *               *  │ столбца                                     :
 *****************  └─                                            :
         :                                                        :
         :                                                        :
         :                                                        :
 *****************  ┌─                                            :
 *               *  │                                 ─┐  *****************
 *               *  │ Инициализация                    │  *               *
 *     j:=i+1    *∙∙│                  Переопределение │  *               *
 *               *  │ счетчика цикла                   │∙∙*    i:=i+1     *
 *               *  │                  счетчика цикла  │  *               *
 *****************  └─                                 │  *               *
         :                                            ─┘  *****************
         :                                                        :
         :                                                        :
         :                                                        :
         :                                                        :
         :∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙.                                 :
         :                      :                                 :
         :              *****************   ┌─                    :
         :              *               *   │                     :
         :              * SwopColNum:=  *   │ Переопределение     :
         :              *               *∙∙∙│                     :
         :              * SwopColNum+1  *   │ номера столбца      :
         :              *               *   │                     :
         :              *****************   └─                    :
         :                      :                                 :
         :                      :Да                               :
         :                      *                                 :
         :                    *   *         ┌─                    :
         :                  *       *       │ Сравнение столбцов: :
         :           Нет  *           *     │                     :
         :∙∙∙∙∙∙∙∙<∙∙∙∙∙*               *∙∙∙│ Sum(A,j)<           :
         *                *           *     │ Sum(A,SwopColNum)   :
       *   *                *       *       │                     :
     *       *                *   *         └─                    :
   *           *   Нет          *                                 :
 *     j>QLine   *∙∙∙∙∙∙∙∙∙∙∙∙∙∙'                                 :
   *           *                                                  :
     *       *                                                    :
       *   *                                                      :
         *                                                        :
         : Да                                                     :
         :                                                        :
         :                                                        :
         *                                                        :
       *   *                                                      :
     *       *                                                    :
   *           *   Нет                                            :
 *    i>QLine-1  *∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
   *           *
     *       *
       *   *
         *
         : Да
         :
         :
 *****************   ┌─
 * *           * *   │
 * *           * *   │ Перестановка столбцов
 * * SwopColumn* *∙∙∙│ i,SwopLineNum
 * *           * *   │ в матрице
 * *           * *   │
 *****************   └─
         :
         :
  ***************
 *               *
 *   К О Н Е Ц   *
 *               *
  ***************


  СХЕМА ПРОЦЕДУРЫ SwopColumn

  ***************
 *               *
 *    П У С К    *
 *               *
  ***************
         :
         :
 *****************  ┌─
 *               *  │
 *               *  │ Инициализация
 *     i:=1      *∙∙│
 *               *  │ счетчика цикла
 *               *  │
 *****************  └─
         :
         :
         :
         :∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙.
         :                      :
         :              *****************    ┌─
         :              *               *    │
         :              *               *    │ Переопределение
         :              *    i:=i+1     *∙∙∙∙│
         :              *               *    │ счетчика цикла
         :              *               *    │
         :              *****************    └─
         :                      :
         :                      :
         :              *****************    ┌─
         :              *               *    │
         :              * Buf:=M[i,A]   *    │ Перестановка
         :              * M[i,A]:=M[i,B]*∙∙∙∙│
         *              * M[i,B]:=Buf   *    │ элементов
       *   *            *               *    │
     *       *          *****************    └─
   *           *   Нет          :
 *     i>QCol    *∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
   *           *
     *       *
       *   *
         *
         : Да
         :
         :
         :
  ***************
 *               *
 *   К О Н Е Ц   *
 *               *
  ***************


  СХЕМА ПРОЦЕДУРЫ Sum

  ***************
 *               *
 *    П У С К    *
 *               *
  ***************
         :
         :
 *****************  ┌─
 *               *  │
 *               *  │ Начальное определение
 *     S:=0      *∙∙│
 *               *  │ суммы
 *               *  │
 *****************  └─
         :
         :
         :
 *****************  ┌─
 *               *  │
 *               *  │ Инициализация
 *     i:=1      *∙∙│
 *               *  │ счетчика цикла
 *               *  │
 *****************  └─
         :
         :
         :
         :∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙.
         :                      :
         :              *****************    ┌─
         :              *               *    │
         :              *               *    │ Переопределение
         :              *    i:=i+1     *∙∙∙∙│
         :              *               *    │ счетчика цикла
         :              *               *    │
         :              *****************    └─
         :                      :
         :                      :
         :              *****************    ┌─
         :              *               *    │
         :              *               *    │ Набор
         :              *  S:=S+A[i,C]  *∙∙∙∙│
         :              *               *    │ суммы
         *              *               *    │
       *   *            *****************    └─
     *       *                  :
   *           *   Нет          :
 *     i>QLine   *∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
   *           *
     *       *
       *   *
         *
         : Да
         :
         :
 *****************  ┌─
 *               *  │
 *               *  │ Определение
 *    Sum:=Q     *∙∙│ значения
 *               *  │ функции
 *               *  │
 *****************  └─
         :
         :
  ***************
 *               *
 *   К О Н Е Ц   *
 *               *
  ***************

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию