Объектно-ориентированное программирование на C++. Андрианова А.А - 221 стр.

UptoLike

Объектно-ориентированное программирование на С++
}
return det;
}
// метод вычисления обратной матрицы
template <class T> Matrix<T> Matrix<T>::operator ~()
{
if(m != n)
throw NonSquareMatrixException();
Matrix<T> res(n, n);
T det = Determinant();
if(det == 0.0)
throw ZeroDevideException();
Matrix<T> temp(n - 1, n - 1);
int z;
for(int i = 0; i < n; i++)
{
z = i%2==0 ? 1 : -1;
for(int j = 0; j < n; j++)
{
temp = SubMatrix(i, j);
res[j][i] = z * temp.Determinant() / det;
z = -z;
}
}
return res;
}
// конструктор класса Slau с заданным количеством
// уравнений m1 и неизвестных n1
template <class T>
Slau<T>::Slau(int m1, int n1): a(m1, n1),b(1, m1),x(1, n1)
{
m = m1;
n = n1;
reoder = new int [n];
for(int i = 0; i < n; i++)
reoder[i] = i;
}
// шаблон дружественного оператора ввода СЛАУ
template <class T>
istream& operator >>(istream& in, Slau<T>& ob)
{
cout << "Матрица коэффициентов: ";
in >> ob.a;
cout << "Вектор свободных членов: ";
in >> ob.b;
221
                     Объектно-ориентированное программирование на С++
    }
    return det;
}

// метод вычисления обратной матрицы
template  Matrix Matrix::operator ~()
{
     if(m != n)
          throw NonSquareMatrixException();
     Matrix res(n, n);
     T det = Determinant();
     if(det == 0.0)
          throw ZeroDevideException();
     Matrix temp(n - 1, n - 1);
     int z;
     for(int i = 0; i < n; i++)
     {
          z = i%2==0 ? 1 : -1;
          for(int j = 0; j < n; j++)
          {
               temp = SubMatrix(i, j);
               res[j][i] = z * temp.Determinant() / det;
               z = -z;
          }
     }
     return res;
}

// конструктор класса Slau с заданным количеством
// уравнений m1 и неизвестных n1
template 
Slau::Slau(int m1, int n1): a(m1, n1),b(1, m1),x(1, n1)
{
     m = m1;
     n = n1;
     reoder = new int [n];
     for(int i = 0; i < n; i++)
          reoder[i] = i;
}

// шаблон дружественного оператора ввода СЛАУ
template 
istream& operator >>(istream& in, Slau& ob)
{
     cout << "Матрица коэффициентов: ";
     in >> ob.a;
     cout << "Вектор свободных членов: ";
     in >> ob.b;

                                                                 221