Sto provando a fare un programma per fare la media dei numeri "intorno" per tutti i numeri di una matrice. Esempio:
(1,2,1)
(0,3,2)
(1,4,2)
Per il valore 3 la media dei valori "intorno" è : 1+2+1+2+2+4+1+0=13 /8 = 1 perché li prende int
Il codice mi pare giusto,francamente non so perché mi da errori. potete darmi una mano? grazie mille!
codice:
public class mediamatrice{ public static void main(String args[]){
int[][] M= { {100, 100, 48, 48},
{215, 100, 56, 56},
{100, 48, 215, 56},
{215, 215, 56, 56} };
int[][] N= { {100, 48},
{215, 215} };
int[][] Media= filtroMedia(M);
for(int i = 0; i < Media[0].length; i++){
for(int j = 0; j < Media.length; j++)
System.out.print(Media[j][i]+" ");
System.out.println();
}
}
public static int[][] filtromedia(int[][]M){
int[][]Mmedia=new int[M.length][M[0].length];
for(int i=0;i<M.length;i++)
for(int j=0;j<M[0].length;j++)
Mmedia[i][j]=media(i,j,M);
return Mmedia;
}
public static int media(int rig,int col,int[][]M){
int cont=0;
if(rig==0 && col==0){
cont=M[0][0]+M[0][1]+M[1][0];
return cont/3;
}
if(rig==3 && col==3){
cont=M[2][2]+M[3][2]+M[2][3];
return cont/3;
}
if(rig==0 &&col==3){
cont=M[0][2]+M[1][2]+M[1][3];
return cont/3;
}
if(rig==3 &&col==0){
cont=M[2][0]+M[2][1]+M[3][1];
return cont/3;
}
if(rig==0 &&col!=0 &&col!=3){
cont=M[0][j-1]+M[1][j-1]+M[1][j]+M[1][j+1]+M[0][j+1];
return cont/5;
}
if(rig==3 &&col!=0 &&col!=3){
cont=M[3][j-1]+M[2][j-1]+M[2][j]+M[2][j+1]+M[3][j+1];
return cont/5;
}
if(col==0 &&rig!=0 &&rig!=3){
cont=M[i-1][0]+M[i-1][1]+M[i][1]+M[i+1][1]+M[i+1][0];
return cont/5;
}
if(col==3 &&rig!=0 &&rig!=3){
cont=M[i-1][3]+M[i-1][2]+M[i][2]+M[i+1][2]+M[i+1][3];
return cont/5;
}
if(rig!=0 && rig!=3 && col!=0 && col!=3){
cont=M[i-1][j-1]+M[i-1][j]+M[i-1][j+1]+M[i][j-1]+M[i][j+1]+M[i+1][j-1]+M[i+1][j]+M[i+1][j+1];
return cont/8;
}
}
}