9. Создать класс Matrix для работы с квадратными матрицами. Обязательно должны быть реализованы: операции сложения, умножения, умножения на скаляр, транспонирования и вычисления определителя.
Все работает правильно, кроме определителя...
Вот, что я сделал:
class Matrix {
public:
int n; //Ðàçìåðíîñòü ìàòðèöû n - размерность матрицы + 1
...
int Array[10][10]; //Ñàìà ìàòðèöà
int Opr(){ //íàõîæäåíèå îïðåäåëèòåëÿ ìàòðèöû
int d=0; //d=E(aij*Aij)
if (this->n==3) return (this->Array[1][1])*(this->Array[2][2])-(this->Array[1][2])*(this->Array[2][1]);
else
for (int i=1; i<(this->n); i++)
for (int j=1; j<(this->n); j++)
d+=(this->Add(i,j))*(this->Array[i][j]);
return d;
};
int Add(int k,int l){ //äîïîëíåíèå k,l
Matrix C;
C.n=(this->n)-1;
int i,j;
for (int i=1; i<k; i++){
for (int j=1; j<l; j++)
C.Array[i][j]=this->Array[i][j];
for (j=l+1; j<(this->n); j++)
C.Array[i][j-1]=this->Array[i][j];
};
for (i=k+1; i<(this->n); i++){
for (j=1; j<l; j++)
C.Array[i-1][j]=this->Array[i][j];
for (j=l+1; j<(this->n); j++)
C.Array[i-1][j-1]=this->Array[i][j];
};
if ((k+l)%2==1) return ((-1)*(C.Opr()));
else return (C.Opr());
};
...
};
А обращаюсь к этим функциям так:
Form1->Edit2->Text=IntToStr(A.Opr());
В результате для матриц 2х2 работает нормально , а для матриц с большей размерностью выдает некоторое число, которое не является определителем матрицы...
Кстати, а как определитель матрицы по-английски звучит?