Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class matrix{
- private:
- int n,m;
- double **mx;
- double dt;
- public:
- matrix(){
- this->mx = NULL;
- }
- matrix(int N,int M,double** MX){
- n=N; m=M;
- mx = new double * [n];
- for (int i=0;i<n;i++){
- mx[i] = new double [m];
- for (int j=0;j<m;j++)
- mx[i][j] = MX[i][j];
- }
- }
- matrix(const matrix* cp){
- this->n = cp->n;
- this->m = cp->m;
- mx = new double * [n];
- for (int i=0;i<n;i++)
- {
- mx[i] = new double [m];
- for (int j=0;j<m;j++)
- mx[i][j] = cp->mx[i][j];
- }
- }
- ~matrix(){
- this->clear();
- }
- double calcMinor (int i,int j){
- if (n==m&&i<n&&j<m&&i>=0&&j>=0){
- double ** buf;
- buf = new double *[n-1];
- for (int q=0;q<n-1;q++)
- buf[q] = new double [m-1];
- }
- return 0;
- }
- void calcDet(){
- if (m==n)
- dt=det (n,mx);
- }
- void showDet(){
- cout << this->dt;
- }
- void showMatrix(){
- for (int i=0;i<n;i++){
- for (int j=0;j<m;j++) cout << mx[i][j] <<" ";
- cout << endl;
- }
- }
- int pow(int a,int b){
- int q=a;
- for (int i=0;i<b-1;i++){
- a*=q;
- }
- return a;
- }
- double det(int N,double** A){ // N-размерность матрицы, A-собственно матрица
- double sum=0;
- if (N==1) return A[0][0];
- else
- if(N!=2)
- for(int i=0;i<N;i++){ //Разложение по первой строке
- sum+=pow((-1),(i+2))*A[0][i]*det(N-1,minor(0,i,N,A));
- }
- else
- sum=A[0][0]*A[N-1][N-1]-A[N-1][0]*A[0][N-1];
- return sum;
- }
- double** minor(int z,int x,int N, double** A){
- double **C = new double*[N-1];
- for(int i=0;i<N-1;i++)
- C[i]=new double[N-1];
- for(int h=0,i=0; i<N-1;i++,h++){
- if(i==z) h++;
- for(int k=0,j=0;j<N-1;j++,k++){
- if(k==x) k++;
- C[i][j]=A[h][k];
- }
- }
- return C;
- }
- void clear(){
- for (int i=0;i<n;i++)
- delete [] mx[i];
- delete [] mx;
- }
- };
- int main()
- {
- double ** mas;
- mas = new double * [2];
- mas[0] = new double[2];
- mas[1] = new double[2];
- mas[0][0]=1;
- mas[0][1]=2;
- mas[1][0]=3;
- mas[1][1]=4;
- matrix A(2,2,mas);
- A.calcDet();
- A.showDet();
- //A.showMatrix();
- //cout << "Hello world!" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement