Determinante di una matrice in C++
Determinante con lo sviluppo di Laplace

/*Autore: Alessandro Barazzuol Argomento: determinante di una matrice nxn @Copyright Alessandro Barazzuol */ #include<iostream> #include<ctime> #include<string> #include<cstdlib> #include<cmath> using namespace std; //calcola la ridotta j-esima di una matrice di dimensione dim //mette la ridotta nella matrice s void ridottaj(int a[100][100],int dim,int s[100][100],int c, int &d) { int i,j; d=0; for(i=0;i<dim-1;i++) { d++; for(j=0;j<dim-1;j++) { if(j<c) { s[i][j]=a[i+1][j]; } else { s[i][j]=a[i+1][j+1]; } } } } //funzione ricorsiva, che calcola il determinante int dete(int a[100][100],int dim) { int d;//dimensione di ogni ridotta, viene valorizzata dalla //funzione ridotta in quanto d è passasto per riferimento int temp[100][100];//matrice che ospita le ridotte int risultato=0;// variabile intera che ospita il determinate if(dim>2) { //percorre le colonne della matrice per estrapolare tutte le ridotte..j=0,j=1 ecc for(int j=0;j<dim;j++) { //calcola le ridotte j=0,j=1 ecc ridottaj(a,dim,temp,j,d); //per ognuna reitera finchè non resta una matrice 2x2 risultato+=(1-2*(j%2))*a[0][j]*dete(temp,d); } } else { risultato=(a[0][0]*a[1][1]-a[0][1]*a[1][0]); } return risultato; } int main() { int array1[100][100]={{1,2,3,4},{-9,-8,-7,6},{55,6,9,9},{2,9,-7,5}}; cout<<dete(array1,4); }