repla
16-01-2009, 20:05
Salve a tutti...
per l'uni ho scritto un programma di ricorsione su matrice...
il codice è questo
#include <iostream>
using namespace std;
const int L=3;
bool unitaria(int mat[][L],int i,int j,int N){
if(i==N){
return true;
}
else{
if(j<N){
if(((i==j)&&(mat[i][j]!=1))||(i!=j)&&(mat[i][j]!=0)){
return false;
}
unitaria(mat,i,j+1,N);}
else{
unitaria(mat,i+1,0,N);
}
}
}
int main(){
int index,index1;
index=0;
index1=0;
int matrice[L][L];
for(int i=0;i<L;i++){
for(int j=0;j<L;j++){
cout<<"Valore ["<<i<<"]["<<j<<"]"<<endl;
cin>>matrice[i][j];
}
}
for(int i=0;i<L;i++){
for(int j=0;j<L;j++){
cout<<matrice[i][j]<<" ";
}
cout<<endl;
}
cout<<"Risultato della funzione: "<<unitaria(matrice,index,index1,L)<<endl;
system("pause");
}
Il programma non fa altro che controllare se la matrice è unitaria...cioè se in [0][0]..[1][1]..[2][2]..e cosi via, ci sono gli uno e nel resto dei campi della matrice ci sono 0.
Ora il problema è questo..
Lo stesso programma, con gli stessi valori compilato da codeblocks mi ritorna sempre false alla funzione(anche con valori con cui dovrebbe tornare true), mentre con visual c++ express funziona correttamente.
Sto da una giornata a cercare di capire il perchè ma nn riesco a venirne a capo.
Grazie a coloro che mi aiuteranno.
Ciao
per l'uni ho scritto un programma di ricorsione su matrice...
il codice è questo
#include <iostream>
using namespace std;
const int L=3;
bool unitaria(int mat[][L],int i,int j,int N){
if(i==N){
return true;
}
else{
if(j<N){
if(((i==j)&&(mat[i][j]!=1))||(i!=j)&&(mat[i][j]!=0)){
return false;
}
unitaria(mat,i,j+1,N);}
else{
unitaria(mat,i+1,0,N);
}
}
}
int main(){
int index,index1;
index=0;
index1=0;
int matrice[L][L];
for(int i=0;i<L;i++){
for(int j=0;j<L;j++){
cout<<"Valore ["<<i<<"]["<<j<<"]"<<endl;
cin>>matrice[i][j];
}
}
for(int i=0;i<L;i++){
for(int j=0;j<L;j++){
cout<<matrice[i][j]<<" ";
}
cout<<endl;
}
cout<<"Risultato della funzione: "<<unitaria(matrice,index,index1,L)<<endl;
system("pause");
}
Il programma non fa altro che controllare se la matrice è unitaria...cioè se in [0][0]..[1][1]..[2][2]..e cosi via, ci sono gli uno e nel resto dei campi della matrice ci sono 0.
Ora il problema è questo..
Lo stesso programma, con gli stessi valori compilato da codeblocks mi ritorna sempre false alla funzione(anche con valori con cui dovrebbe tornare true), mentre con visual c++ express funziona correttamente.
Sto da una giornata a cercare di capire il perchè ma nn riesco a venirne a capo.
Grazie a coloro che mi aiuteranno.
Ciao