Sto realizzando un programma in visual c++ con le matrici....
Ho utilizzato la seguente funzione per il calcolo del determinante
void determinante()
{
float matrice[10][10];
int rig,col;
int i,j;
system("CLS");
do{
cout<<"Inserisci il numero di righe della matrice: "<<endl;
cin>>rig;
}while(rig<=0);
do{
cout<<"\nInserisci il numero di colonne della matrice: "<<endl;
cin>>col;
}while(col<=0);
for(i=1;i<=rig;i++){
for(j=1;j<=col;j++){
cout<<"Inserire l'elemento ["<<i<<"]["<<j<<"]"<<endl;
cin>>matrice[i][j];
}
}
cout<<"\nLa matrice inserita e':\n\n"<<endl;
for(i=1;i<=rig;i++){
cout<<"\n";
for(j=1;j<=col;j++){
cout<<matrice[i][j]<<" ";
}
}
cout<<"\n\n";
system("pause");
system("CLS");
i=0;
j=0;
float det,q,w,e,r,t,u,o,p,d,f,g,z;
if (rig==col)
{
switch (rig)
{
case 1:
//matrice 1 x 1
system("CLS");
cout << " Il determinante della matrice e': ";
cout << matrice[i][j];
break;
case 2: //matrice 2 x 2
det=((matrice[0][0]*matrice[1][1])-(matrice[1][0]*matrice[0][1]));
system("CLS");
cout << " Il determinante della matrice e': ";
cout << det;
break;
case 3: //matrice 3 x 3
q=(matrice[0][0]*matrice[1][1]*matrice[2][2])+(matrice[0][1]*matrice[1][2]*matrice[2][0])+(matrice[0][2]*matrice[1][0]*matrice[2][1]);
w=(matrice[0][2]*matrice[1][1]*matrice[2][0])+(matrice[0][0]*matrice[1][2]*matrice[2][1])+(matrice[0][1]*matrice[1][0]*matrice[2][2]);
det=q-w;
system("CLS");
cout << " Il determinante della matrice e': ";
cout << det;
break;
case 4: //matrice 4 x 4
q= ( matrice[1][1] * (( matrice[2][2] * matrice[3][3]) - ( matrice[3][2] * matrice[2][3] )));
w= ( matrice[1][2] * ((matrice[2][1] * matrice[3][3]) - (matrice[3][1] * matrice[2][3])));
e= ( matrice[1][3] * ((matrice[2][1] * matrice[3][2]) - (matrice[3][1] * matrice[2][2])));
r= ( matrice[1][0] * ((matrice[2][2] * matrice[3][3]) - (matrice[3][2] * matrice[2][3])));
t= ( matrice[1][2] * ((matrice[2][0] * matrice[3][3]) - (matrice[3][0] * matrice[2][3])));
u= ( matrice[1][3] * ((matrice[2][0] * matrice[3][2]) - (matrice[3][0] * matrice[2][2])));
o= ( matrice[1][0] * ((matrice[2][1] * matrice[3][3]) - (matrice[3][1] * matrice[2][3])));
p= ( matrice[1][1] * ((matrice[2][0] * matrice[3][3]) - (matrice[3][0] * matrice[2][3])));
d= ( matrice[1][3] * ((matrice[2][0] * matrice[3][1]) - (matrice[3][0] * matrice[2][1])));
f= ( matrice[1][0] * ((matrice[2][1] * matrice[3][2]) - (matrice[3][1] * matrice[2][2])));
g= ( matrice[1][1] * ((matrice[2][0] * matrice[3][2]) - (matrice[3][0] * matrice[2][2])));
z= ( matrice[1][2] * ((matrice[2][0] * matrice[3][1]) - (matrice[3][0] * matrice[2][1])));
det=((matrice[0][0] * (q-w+e))-(matrice[0][1] * (r-t+u)) + (matrice[0][2] * (o-p+d)) - (matrice[0][3] * (f-g+z)));
system("CLS");
cout << " Il determinante della matrice e': ";
cout << det;
break;
default:
cout<< "ERRORE: Massimo 4 righe e 4 colonne\n";
}
}
else //le righe sono diverse dalla colonne
{
cout<<" ERRORE: la matrice deve essere quadrata\n";
}
if (((rig>=5)||(rig<=0))&&((rig>=5)||(rig<=0))) {
cout<<" ERRORE: il valore massimo sopportato e' 4 x 4\n";
}
cout<<"\n\n";
system("pause");
system("CLS");
}
Il risultato però è errato...
Se per esempio inserisco una matrice 2 X 2
1 2
2 1
Come risultato ottengo -1.15292e+016
Ki è in grado d aiutarmi....grazie

Rispondi quotando


