Программа


TYPE PowerMatrix=1..50; { Максимальное возможное количествао строк и
                         столбцов матрицы (размер несущего массива) }
     Element=real; { Тип элементов матрицы }
     MatrixType=record { Матрица }
                  M,N:PowerMatrix; { Фактическая размерность матрицы }
                  Matrix:array [PowerMatrix,PowerMatrix] of element
                                                           { Несущая матрица }
                end;
PROCEDURE InputMatrix (var Matrix:MatrixType); { Процедура ввода матрицы }
  Var i,j:PowerMatrix;  { Счетчики строк и столбцов }
  Begin
    Write('Введите количество строк и столбцов матрицы ');
                          { Вывод приглашения ввести размерность матрицы }
    with Matrix do
    begin
    ReadLn(M,N); { Ввод размерности матрицы }
    for i:=1 to M do { Цикл ввода строк матрицы }
      for j:=1 to N do { Цикл ввода элементов матрицы }
        begin
          Write('Введите элемент [',i,',',j,'] ');
                                 { Вывод приглашения ввести элемент матрицы }
          ReadLn(Matrix[i,j])   { Ввод элемента матрицы }
        end
    end
  End;
PROCEDURE OutputMatrix(Matrix:MatrixType); { Процедура вывода матрицы }
  Var i,j:PowerMatrix;   { Счетчики строк и столбцов }
  Begin
    with Matrix do
    for i:=1 to M do { Цикл вывода строк матрицы }
      begin
        for j:=1 to N do { Цикл вывода элементов матрицы }
          Write (Matrix[i,j]:5:0,'  ');  { Вывод элемента матрицы }
        WriteLn  { Вывод конца строки }
      end
  End;
PROCEDURE OutputMatrixF(var F:text;Matrix:MatrixType);
                                 { Процедура вывода матрицы в текстовый файл }
  Var i,j:PowerMatrix;   { Счетчики строк и столбцов }
  Begin
    with Matrix do
    for i:=1 to M do { Цикл вывода строк матрицы }
      begin
        for j:=1 to N do { Цикл вывода элементов матрицы }
          Write (F,Matrix[i,j]:5:0,'  ');  { Вывод элемента матрицы }
        WriteLn(F)  { Вывод конца строки }
      end;
  End;
PROCEDURE GetMult(InMatrix:MatrixType;var OutMatrix:MatrixType);
                                                       { Процедура умножения }
  Var i,j,k:PowerMatrix; { Счетчики циклов }
  Begin
    { Определение размерности результирующей матрицы: }
    OutMatrix.M:=InMatrix.N;
    OutMatrix.N:=InMatrix.N;
    for i:=1 to InMatrix.N do { Цикл определения результирующей матрицы по строкам }
      for j:=1 to InMatrix.N do { Цикл определения результирующей матрицы по столбцам }
      begin
        OutMatrix.Matrix[i,j]:=0; { Сброс суммы элемента }
        for k:=1 to InMatrix.M do { Цикл набора суммы элемента }
          OutMatrix.Matrix[i,j]:=OutMatrix.Matrix[i,j]+ { Набор суммы элемента }
                                 InMatrix.Matrix[k,i]*InMatrix.Matrix[k,j]
      end
  End;
PROCEDURE Stop; { Процедура остановки программы }
  Begin
    WriteLn('Нажмите <Enter>'); { Вывод приглашения нажать <Enter> }
    ReadLn                      { Остановка программы до нажатия <Enter> }
  End;
VAR
    A,B,C,R:MatrixType; { Матрицы }
    F:text; {  }
BEGIN
  WriteLn; { Пропуск строки }
  Assign(F,'DATA'); { Связывание файловой переменной с именем файла }
  Rewrite(F); { Открытие файла для записи }

  WriteLn(' ВВОД МАТРИЦЫ A:');  { Вывод подсказки }
  InputMatrix(A); { Ввод матрицы }
  WriteLn; { Пропуск строки }
  WriteLn(' Исходная матрица A: ');  { Вывод заголовка }
  OutputMatrix(A); { Вывод матрицы }
  GetMult(A,R); { Получение произведения A'*A }
  WriteLn(' Произведение матрицы A: ');  { Вывод заголовка }
  OutputMatrix(R); { Вывод матрицы }
  WriteLn(F,' Произведение матрицы A: ');  { Вывод заголовка в файл }
  OutputMatrixF(F,R); { Вывод матрицы в файл }
  Stop; { Остановка программы }

  WriteLn(' ВВОД МАТРИЦЫ B:');  { Вывод подсказки }
  InputMatrix(B); { Ввод матрицы }
  WriteLn; { Пропуск строки }
  WriteLn(' Исходная матрица B: ');  { Вывод заголовка }
  OutputMatrix(B); { Вывод матрицы }
  GetMult(B,R); { Получение произведения B'*B }
  WriteLn(' Произведение матрицы B: ');  { Вывод заголовка }
  OutputMatrix(R); { Вывод матрицы }
  WriteLn(F,' Произведение матрицы B: ');  { Вывод заголовка в файл }
  OutputMatrixF(F,R); { Вывод матрицы в файл }
  Stop; { Остановка программы }

  WriteLn(' ВВОД МАТРИЦЫ C:');  { Вывод подсказки }
  InputMatrix(C); { Ввод матрицы }
  WriteLn; { Пропуск строки }
  WriteLn(' Исходная матрица C: ');  { Вывод заголовка }
  OutputMatrix(C); { Вывод матрицы }
  GetMult(C,R); { Получение произведения C'*C }
  WriteLn(' Произведение матрицы C: ');  { Вывод заголовка }
  OutputMatrix(R); { Вывод матрицы }
  WriteLn(F,' Произведение матрицы C: ');  { Вывод заголовка в файл }
  OutputMatrixF(F,R); { Вывод матрицы в файл }
  Stop; { Остановка программы }

  Close(F) { Закрытие файла }
END.


  Схема процедуры "Stop"

  ***************
 *               *
 *    П У С К    *
 *               *
  ***************
         :
         :
   *****************                 ┌─
                                     │
  *  "Нажмите     *                  │ Вывод приглашения
                   ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙│
 *    <Enter>"   *                   │ нажать <Enter>
                                     │
*****************                    └─
         :
         :
   *****************                 ┌─
                                     │
  *               *                  │ Остановка программы
       ReadLn      ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙│
 *               *                   │ до нажатия <Enter>
                                     │
*****************                    └─
         :
         :
  ***************
 *               *
 *   К О Н Е Ц   *
 *               *
  ***************


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

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


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

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


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

     ***************
    *               *
    *    П У С К    *
    *               *
     ***************
            :
            :
            :
    *****************  ┌─
    * OutMatrix.M:= *  │
    *  InMatrix.N   *  │ Определение
    *               *∙∙│ размерности
    * OutMatrix.N:= *  │ результирующей
    *  InMatrix.N   *  │ матрицы
    *****************  └─
            :
            :
            :
    *****************  ┌─
    *               *  │
    *               *  │ Инициализация
    *     i:=1      *∙∙│
    *               *  │ счетчика цикла
    *               *  │
    *****************  └─
            :
            :∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.
            :                                                        :
            :                                                        :
            :                                                        :
            *                                                        :
          *   *                                          ─┐  *****************
        *       *                                         │  *               *
 Да   *           *                       Переопределение │  *               *
.∙∙∙*      i>M      *                                     │∙∙*    i:=i+1     *
:     *           *                       счетчика цикла  │  *               *
:       *       *                                         │  *               *
:         *   *                                          ─┘  *****************
:           *                                                        :
:           :                                                        :
:           :Нет                                                     :
:           :                                                        `∙∙∙∙<∙∙∙∙.
:           :                                                                  :
:   *****************  ┌─                                                      :
:   *               *  │                                                       :
:   *               *  │ Инициализация                                         :
:   *     j:=1      *∙∙│                                                       :
:   *               *  │ счетчика цикла                                        :
:   *               *  │                                                       :
:   *****************  └─                                                      :
:           :                                                                  :
:           :                                                                  :
:           :∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙<∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙.  :
:           :                                                               :  :
:           *                                                               :  :
:         *   *                                                             :  :
:       *       *                                                           :  :
:     *           *   Нет                                                   :  :
:   *      j>N      *∙∙∙∙∙.                                                 :  :
:     *           *       :                                                 :  :
:       *       *         :                                                 :  :
:         *   *   *****************   ┌─                                    :  :
:           *     *               *   │                                     :  :
:           : Да  *   OutMatrix.  *   │ Сброс                               :  :
:           :     * Matrix[i,j]:=0*∙∙∙│                                     :  :
:           :     *               *   │ суммы                               :  :
:           :     *               *   │                                     :  :
:           :     *****************   └─                                    :  :
:           :             :                                                 :  :
:           :     *****************  ┌─                                     :  :
:           :     *               *  │                                      :  :
:           :     *               *  │ Инициализация                        :  :
:           :     *     k:=1      *∙∙│                                      :  :
:           :     *               *  │ счетчика цикла                       :  :
:           :     *               *  │                                      :  :
:           :     *****************  └─                                     :  :
:           :             :                                                 :  :
:           :             :                                                 :  :
:           :             :                                                 :  :
:           :             :                                                 :  :
:           :             :∙∙∙∙∙∙<∙∙∙∙∙.                                    :  :
:           :             :            :                                    :  :
:           :             :            :                                    :  :
:           :             :    *****************  ┌─                        :  :
:           :             :    *               *  │                         :  :
:           :             :    *               *  │ Переопределение         :  :
:           :             :    *    k:=k+1     *∙∙│                         :  :
:           :             :    *               *  │ счетчика цикла          :  :
:           :             :    *               *  │                         :  :
:           :             :    *****************  └─                        :  :
:           :             :            :                                    :  :
:           :             :            :                                    :  :
:           :             :    *****************  ┌─                        :  :
:           :             :    *               *  │ OutMatrix.Matrix[i,j]:= :  :
:           :             :    *               *  │ OutMatrix.Matrix[i,j]+  :  :
:           :             :    *               *∙∙│ InMatrix.Matrix[k,i]*   :  :
:           :             :    *               *  │ InMatrix.Matrix[k,j]    :  :
:           :             :    *               *  │                         :  :
:           :             :    *****************  └─                        :  :
:           :             :            :                                    :  :
:           :             *            :                                    :  :
:           :           *   *          :                                    :  :
:           :         *       *        :                                    :  :
:           :       *           *   Нет:                                    :  :
:           :     *  k>InMatrix.N *∙∙∙∙'                                    :  :
:           :       *           *                                           :  :
:           :         *       *                                             :  :
:           :           *   *                                               :  :
:           :             *                                                 :  :
:           :             : Да                                              :  :
:           :             :                                                 :  :
:           :             :                                                 :  :
:           :     *****************   ┌─                                    :  :
:           :     *               *   │                                     :  :
:           :     *               *   │ Переопределение                     :  :
:           :     *    j:=j+1     *∙∙∙│                                     :  :
:           :     *               *   │ счетчика цикла                      :  :
:           :     *               *   │                                     :  :
:           :     *****************   └─                                    :  :
:           :             :                                                 :  :
:           :             `∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'  :
:           :                                                                  :
`∙∙∙∙∙∙∙∙.  `∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙'
         :
         :
         :
         :
  ***************
 *               *
 *   К О Н Е Ц   *
 *               *
  ***************


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

  ***************
 *               *
 *    П У С К    *
 *               *
  ***************
         :
         :
 *****************
 *               *
 *               *
 * Открытие файла*
 *               *
 *               *
 *****************
         :
         :           .∙∙∙∙∙∙∙∙∙∙∙.           ∙∙∙∙∙∙∙∙∙∙∙.
         :           :           :           :          :
 *****************   :   *****************   :  *****************
 * *           * *   :   * *           * *   :  * *           * *
 * *   Ввод    * *   :   * *   Ввод    * *   :  * *   Ввод    * *
 * *           * *   :   * *           * *   :  * *           * *
 * * матрицы A * *   :   * * матрицы B * *   :  * * матрицы B * *
 * *           * *   :   * *           * *   :  * *           * *
 *****************   :   *****************   :  *****************
         :           :           :           :          :
         :           :           :           :          :
         :           :           :           :          :
 *****************   :   *****************   :  *****************
 * *           * *   :   * *           * *   :  * *           * *
 * *   Вывод   * *   :   * *   Вывод   * *   :  * *   Вывод   * *
 * *           * *   :   * *           * *   :  * *           * *
 * * матрицы A * *   :   * * матрицы A * *   :  * * матрицы A * *
 * *           * *   :   * *           * *   :  * *           * *
 *****************   :   *****************   :  *****************
         :           :           :           :          :
         :           :           :           :          :
         :           :           :           :          :
 *****************   :   *****************   :  *****************
 * *           * *   :   * *           * *   :  * *           * *
 * * Получение * *   :   * * Получение * *   :  * * Получение * *
 * *  произве- * *   :   * *  произве- * *   :  * *  произве- * *
 * *   дения   * *   :   * *   дения   * *   :  * *   дения   * *
 * *           * *   :   * *           * *   :  * *           * *
 *****************   :   *****************   :  *****************
         :           :           :           :          :
         :           :           :           :          :
         :           :           :           :          :
 *****************   :   *****************   :  *****************
 * *           * *   :   * *           * *   :  * *           * *
 * *   Вывод   * *   :   * *   Вывод   * *   :  * *   Вывод   * *
 * *           * *   :   * *           * *   :  * *           * *
 * * результата* *   :   * * результата* *   :  * * результата* *
 * *           * *   :   * *           * *   :  * *           * *
 *****************   :   *****************   :  *****************
         :           :           :           :          :
         :           :           :           :          :
 *****************   :   *****************   :  *****************
 * *           * *   :   * *           * *   :  * *           * *
 * *   Вывод   * *   :   * *   Вывод   * *   :  * *   Вывод   * *
 * * результата* *   :   * * результата* *   :  * * результата* *
 * *  в файл   * *   :   * *  в файл   * *   :  * *  в файл   * *
 * *           * *   :   * *           * *   :  * *           * *
 *****************   :   *****************   :  *****************
         :           :           :           :          :
         :           :           :           :          :
 *****************   :   *****************   :  *****************
 * *           * *   :   * *           * *   :  * *           * *
 * *           * *   :   * *           * *   :  * *           * *
 * *   Stop    * *   :   * *   Stop    * *   :  * *   Stop    * *
 * *           * *   :   * *           * *   :  * *           * *
 * *           * *   :   * *           * *   :  * *           * *
 *****************   :   *****************   :  *****************
         :           :           :           :          :
         `∙∙∙∙∙∙∙∙∙∙∙'           `∙∙∙∙∙∙∙∙∙∙∙'          :
                                                *****************
                                                *               *
                                                *               *
                                                * Открытие файла*
                                                *               *
                                                *               *
                                                *****************
                                                        :
                                                        :
                                                 ***************
                                                *               *
                                                *   К О Н Е Ц   *
                                                *               *
                                                 ***************


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