Stavo provando a scrivere questa funzione che data una matrice di imput calcolasse la media degli elementi non perimetrali. esercizietto piuttosto semplice, ma ho qualche problema con la compilazione e qualche dubbio sul richiamo della funzione. posto il codice e lo condisco di commenti sui dubbi e sull'errore. grazie mille
il codice è:
#include <iostream>
using namespace std;
#define MAX 50
typedef float matrice[MAX][MAX];
float media_el_non_perimetrali (matrice m[][MAX]) //è giusta la dichiarazione di parametro formale?
{int n; cout<<"inserire l'ordine della matrice"<<endl;
cin>> n;
if (n<=0)
{cout<<"impossibile lavorare su matrici di ordine"<<n;
return 0;}
else
{if (n<=2)
{cout<<"non esistono elementi non perimetrali";
return 0;}
else
{for (int i=0, n; i<n; i++) //inserimento matrice
{for (int j=0, n; j<n; j++)
{cout<<"inserire l'elemento di posizione "<<i<<" ; "<<j;
cin >> m[i][j];}}} //a questa riga di codice il compilatore da l'errore "no match for operator>>"
float somma=0; //qual è il problema?
for (int i=1, n; i<(n-1); i++)
{for (int j=1, n; j<(n-1); j++)
somma=somma+m[i][j];} //a questa riga il compilatore mi darà lo stesso problema di sopra?
return somma/(n-1)*(n-1);
}}
int main ()
{matrice mat; float risultato; risultato=media_el_non_perimetrali(mat);//è giusto il richiamo? con questo richiamo attivo
cout<<"il risultato della media elementi non perimetrali e'"<<risultato; //tutta la sequenza di istruzioni
} //codificate dalla funzione?