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; } } }

Rispondi quotando
