Поиск определителя

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ASK.FM, 8 Mar 2014.

  1. ASK.FM

    ASK.FM New Member

    Joined:
    10 Aug 2012
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    Здравствуйте. Очень нужна помощь. Нужна программа для поиска определителя до 10 порядка включительно. Очень благодарен буду за любую помощь

    Есть программа, но не конца понимаю, как она работает


    #include "stdafx.h"
    #include <iostream>
    #include <conio.h>
    #include <cmath>
    using namespace std;

    int determ(int** Arr, int size);

    int main()
    {
    int size;
    cout<<"Vveite size";
    cin>>size;
    int **Arr;
    Arr=new int*[size];
    for(int i=0;i<size;++i)
    Arr=new int[size];
    for(int i=0;i<size;++i)
    for(int j=0;j<size;++j)
    cin>>Arr[j];
    for(int i=0;i<size;++i)
    {
    for(int j=0;j<size;++j)
    cout<<Arr[j]<<' ';
    cout<<endl;
    }
    cout<< determ(Arr, size) <<'\n';
    for(int i=0;i<size;++i)
    delete[] Arr;
    delete[] Arr;
    system("pause");
    return 0;
    }

    int determ(int** Arr, int size)
    {
    int i,j;
    double det=0;
    int **matr;
    if(size==1)
    {
    det=Arr[0][0];
    }
    else if(size==2)
    {
    det=Arr[0][0]*Arr[1][1]-Arr[0][1]*Arr[1][0];
    }
    else
    {
    matr=new int*[size-1];
    for(i=0;i<size;++i)
    {
    for(j=0;j<size-1;++j)
    {
    if(j<i)
    matr[j]=Arr[j];
    else
    matr[j]=Arr[j+1];
    }
    det+=pow(-1, (i+j))*determ(matr,size-1)*Arr[size-1];
    }
    delete[] matr;
    }
    return det;
    }
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    http://rosettacode.org/wiki/Matrix_arithmetic#C
     
    _________________________