Демонстрационные возможности программ. Функция для вычисления определителя квадратной матрицы. Модуль для вывода на дисплей или в файл промежуточных данных, страница 4

       MatOpenOutFile(keyDemo,numFrag);

       fprintf(F,"\nШаг %3i",numStep);

       MatWriteMat(n,n,A,"\0");

       fclose(F);

       break;

       case 2: // вывод сообщения о невозможности продолжения

       MatOpenOutFile(keyDemo,numFrag);

       fprintf(F,"\nЭлемент A[%2i][%2i] = 0.\n",numStep,numStep);

fprintf(F,"Дальнейшее преобразование невозможно.\n");

fclose(F);

       break;

       case 3: // вывод определителя

       MatOpenOutFile(keyDemo,numFrag);

       fprintf(F,"\nОпределитель = ");

       fprintf(F,Format,det);

       fprintf(F,"\n");

fclose(F);

       break;

       }

}

// ─── Конец функции MatWriteDetMat ──────────────────────────────────

// ─── Начало функции MatWriteMat ────────────────────────────────────

void MatWriteMat(int m, int n, Matrix A, string S)

/*

    ╔════════════════════════════════════════════════════════════════╗

    ║       Функция для вывода матрицы на дисплей или в файл         ║

    ╚════════════════════════════════════════════════════════════════╝

  ╔════════════════════════════════════════════════════════════════════╗

  ║ Входные переменые:                                                 ║

  ║   m   -  число строк матрицы;                                      ║

  ║   n   -  число столбцов матрицы;                                   ║

  ║   A   -  выводимая матрица;                                        ║

  ║ Необязательная входная переменная:                                 ║

  ║   S   -  строка надписи над матрицей.                              ║

  ╟────────────────────────────────────────────────────────────────────╢

  ║ Выходных переменных нет.                                           ║

  ╟────────────────────────────────────────────────────────────────────╢

  ║ Примечания:                                                        ║

  ║   1. Вывод в файл происходит при значении глобальной переменной    ║

  ║      keyDemo=3. При keyDemo = 1 или 2 происходит вывод на дисплей. ║

  ║   2. Спецификация вывода управляется константами spec, npos и ndig ║

  ║      модуля define.h.                                              ║

  ╚════════════════════════════════════════════════════════════════════╝

  ╔════════════════════════════════════════════════════════════════════╗

  ║(C) N.V.Usoltsev  Create 10.07.06  Var 01 - 10.07.06  Test 10.07.06 ║

  ╚════════════════════════════════════════════════════════════════════╝

*/

{

// описание данных

     int i,j;

// вывод

     fprintf(F,"\n");

     fprintf(F,S);

     fprintf(F,"\n");

     for (i=1; i<=m; i++)

       {

       for (j=1; j<=n; j++)

         fprintf(F,Format,A[i][j]);

       fprintf(F,"\n");

       }

}

// ─── Конец функции MatWriteMat ────────────────────────────────────

// ════════════════════════════════════════════════════════════════════

//     End модуля dMatrix

// ════════════════════════════════════════════════════════════════════

Листинг 4

// Заголовочный файл matrix.h

// Прототипы функций, содержащихся в модуле matrix.cpp

#include "define.h"

     int DetMat(int, Matrix, double&, int=0, string="detmat.dat");

Листинг 5

// Заголовочный файл dmatrix.h

// Прототипы функций модуля dMatrix

#include "define.h"

void MatWriteDetMat(int, int, int, int, Matrix, double);

void MatWriteMat(int, int, Matrix, string='\0');