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

//     Err=DetMat(n,A,det);              // без демонстрации

//     Err=DetMat(n,A,det,2);            // вывод на дисплей

//     Err=DetMat(n,A,det,-2);           // выводвфайл detmat.dat

     Err=DetMat(n,A,det,-2,"murka.dat"); // выводвфайл murka.dat

// выводрезультата

     cout<<endl;

     cout<<"Err = "<<Err<<endl;

     cout<<"det = "<<det<<endl;

     getch();

}

Листинг 2

#define DEMO

/*

                     Модуль Matrix

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

   ║            Некоторые функции для работы с матрицами         ║

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

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

║   Модуль содержит подпрограммы-функции:                            ║

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

║ 14).DetMat    - вычисление определителя квадратной матрицы;        ║

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

*/

#include <math.h>

#include <conio.h>

#include <string.h>

#include "define.h"

#include "dmatrix.h"

// глобальная переменная

     string FileName;

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

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

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

int DetMat(int n, Matrix A, double& det, int keyDemo, string FileName_)

/*

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

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

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

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

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

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

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

║      A   - сама матрица (двумерный массив);                        ║

╠════════════════════════════════════════════════════════════════════╣

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

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

║    det   - определитель матрицы;                                   ║

╠════════════════════════════════════════════════════════════════════╣

║  Возвращаемое значение - DetMat=Err - код ошибки:                  ║

║    Err = 0 - все нормально;                                        ║

║    Err > 0 - при выполнении алгоритма происходит попытка деления   ║

║              на нулевой элемент. Значение Err равно номеру шага,   ║

║              на котором это происходит.                            ║

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

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

║(C) N.V.Usoltsev  Create 27.04.99  Var 03 - 01.09.06  Test 01.09.06 ║

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

*/

{

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

     int i,j,k;

     double c,P;

     Matrix AW;

// изменение глобальной переменной

     strcpy(FileName,FileName_);

// переписывание исходной матрицы в рабочий массив AW

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

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

AW[i][j]=A[i][j];

#ifdef DEMO