PDA

View Full Version : [C++]somma massima diagonali matrice


drunkenpenguin
17-08-2010, 12:34
ho il seguente codice, che dovrebbe calcolare la somma massima delle diagonali di una matrice
#include <iostream>

#define RANGO 4

using namespace std;

int massimoDiagonali(const int matrice[][RANGO]);

int main(){

int matrice[RANGO][RANGO],i,j,x;

cout<<"inserire i numeri della matrice"<<endl;

for(i=0;i<RANGO;i++){
for(j=0;j<RANGO;j++){
x=0;
cin>>x;
matrice[i][j]=x;
}
}
cout<<"la somma massima della matrice è "<<massimoDiagonali(matrice)<<endl<<endl;
return 0;
}


int massimoDiagonali(const int mat[][RANGO]){
int mat[RANGO][RANGO];

int rk=4, z=0,k,max=0, somma=0;

for(k=0; k<=rk; k++){
while(k>=0){
somma+=mat[k][z];
k--;
z++;
}
if(somma>max) max=somma;
}

for(z=0; z<=rk; z++){
while(z>=0){
somma+=mat[k][z];
z--;
k++;
}
if(somma>max) max=somma;
}
return max;
}


il problema è che quando vado a compilare, escono svariati errori(in realtà mi sa' che sono 4 di cui 2 si ripetono).
Li postosommaDiagonale.cpp:9: error: ‘::main’ must return ‘int’
sommaDiagonale.cpp: In function ‘int main()’:
sommaDiagonale.cpp:19: error: ‘matrice’ was not declared in this scope
sommaDiagonale.cpp:22: error: ‘matrice’ was not declared in this scope
sommaDiagonale.cpp: In function ‘void massimoDiagonali(const int (*)[4])’:
sommaDiagonale.cpp:29: error: declaration of ‘int matrice [4][4]’ shadows a parameter
sommaDiagonale.cpp:35: error: ‘somma’ was not declared in this scope
sommaDiagonale.cpp:39: error: ‘somma’ was not declared in this scope
sommaDiagonale.cpp:44: error: ‘somma’ was not declared in this scope
sommaDiagonale.cpp:48: error: ‘somma’ was not declared in this scope
sommaDiagonale.cpp:50: error: return-statement with a value, in function returning 'void'


Qualcuno saprebbe spiegarmi dove sbaglio?:cry:

drunkenpenguin
17-08-2010, 12:57
ok...compilavo una vecchia versione dello script...mi rimane l'errore
error: declaration of ‘int mat [4][4]’ shadows a parameter

...sinceramente non riesco a capire tanto bene nemmeno cosa significa...

sottovento
17-08-2010, 13:10
Significa:


int massimoDiagonali(const int mat[][RANGO])
{
int mat[RANGO][RANGO];


Quale mat vuoi? Il parametro o quello locale?

drunkenpenguin
17-08-2010, 13:15
mmm, il locale...:confused:

sottovento
17-08-2010, 13:25
mmm, il locale...:confused:

Guardando il programma, direi che vuoi usare il parametro, quindi devi semplicemente cancellare la dichiarazione locale

drunkenpenguin
17-08-2010, 13:57
ok, torna tutto:)