PDA

Visualizza la versione completa : [C++] procedura ricorsiva su matrice


wgd-developer
24-04-2008, 11:59
Salve, ho svolto questa procedura, la compila ma non funziona...
sapreste dirmi l'errore?

grazie

/*
Assegnata una matrice quadrata NxN, scrivere una procedura ricorsiva che
calcoli la somma delle righe pari e delle righe dispari.
*/

#include<iostream>
#include<cstdlib>
#include <ctime>

using namespace std;
void PariDispari(int [][3], int, int, int, int &, int&);
void StampaMat(char, const int [][3], int);

int main()
{
int A[][3]={1,0,0,0,1,0,0,0,1};
int i=0, j=0, n=3, sommaP=0, sommaD=0;

PariDispari(A, i, j, n, sommaP, sommaD);
cout<<sommaP<<endl;
cout<<sommaD<<endl;

StampaMat('A',A,n);

system("pause");
}


void PariDispari(int A[][3], int i, int j, int n, int &sommaP, int &sommaD){
if(i<=n){
if(j>n)
PariDispari(A, i+1, 0, n, sommaP, sommaD);
else if((i%2)==0)
sommaP+=A[i][j];
else
sommaD+=A[i][j];
PariDispari(A, i, j+1, n, sommaP, sommaD);
}

}


void StampaMat(char nomemat,const int A[][3], int n) {
int i,j;
for (i=0;i<n;i++) {
for (j=0; j<n; j++)
cout<<nomemat<<"["<<i<<"]["<<j<<"]="<<A[i][j]<<" ";
cout<<endl;
}
}

mondobimbi
24-04-2008, 12:17
usa il tag
... per conservare l'indentazione nel tuo codice.
ciao
sergio

wgd-developer
24-04-2008, 12:20
void pariDispari(int a[][colmax], int i, int j, int N, int &sommaP, int &sommaD)
{
if (i<=N)
{
if (j>N)
return pariDispari(a,i+1,0,N,sommaP,sommaD);
else
if ((i%2)==0)
sommaP+=a[i][j];
else
sommaD+=a[i][j];
return pariDispari(a,i,j+1,N,sommaP,sommaD); }
}



funziona, grazie lo stesso
scusa, siccome stò facendo pratica, non è che sai indicarmi qualche buon sito
dove posso trovare esempi svolti, traccè da svolgere, etc...

Grazie
Antonio

LeleFT
24-04-2008, 12:53
Ricorda che il linguaggio va obbligatoriamente indicato nel titolo.


L'ho aggiunto io.


Ciao. :ciauz:

wgd-developer
24-04-2008, 13:03
ok
grazie

Loading