|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2002
Messaggi: 393
|
[C++]Ricorsione su matrice
Salve a tutti...
per l'uni ho scritto un programma di ricorsione su matrice... il codice è questo Codice:
#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"); } 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 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Se la ripensi un attimo la puoi migliorare: fai lavorare gli indici separatamente e cerca di capire quando incrementarli e quando non incrementarli, il resto è solo un test di eguaglianza + chiamata ricorsiva.
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Sep 2002
Messaggi: 393
|
Quote:
![]() Rimane solo il problema tra codeblock e vsual c++. Ciao |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
![]() ![]() ![]() Ma chi c'avete come prof, topo Gigio? ![]() Codice:
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); } } } ![]() A questo punto mi meraviglio di come possa funzionare su Visual C++... sarà magico. ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2002
Messaggi: 393
|
per il
Codice:
return Ora il codice funziona sia su codeblock che su visual c++. Non so però perchè prima su visual c++ funzionava ugualmente... Ora devo passare solo a migliorare la funzione... Ciao e grazie... |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Capita... buono studio.
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:26.