Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    19

    media cornice di un numero di una matrice

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

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Che errori?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    19
    praticamente mi da errore su quasi ogni riga...88 errori in totale. Non ho idea,il codice comunque mi pare giusto

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Beh... Intanto ti consiglio di seguire le convenzioni Java per la nomenclatura e indentazione, in modo da rendere più leggibile il tuo codice.

    Poi ti suggerisco di leggere gli errori segnalati dal compilatore, che in genere sono abbastanza chiari.

    Ad esempio, "The method filtroMedia(int[][]) is undefined for the type mediamatrice" ti dice che il metodo "filtroMedia(int[][])" non esiste: basta controllare un attimo per vedere che il tuo metodo si chiama filtromedia(int[][]).

    Poi... all'interno di media usi i e j ma non sono dichiarati da nessuna parte...

    Sull'algoritmo in sè non mi esprimo, non ho tempo di guardarmelo tutto ^^
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    19
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Beh... Intanto ti consiglio di seguire le convenzioni Java per la nomenclatura e indentazione, in modo da rendere più leggibile il tuo codice.

    Poi ti suggerisco di leggere gli errori segnalati dal compilatore, che in genere sono abbastanza chiari.

    Ad esempio, "The method filtroMedia(int[][]) is undefined for the type mediamatrice" ti dice che il metodo "filtroMedia(int[][])" non esiste: basta controllare un attimo per vedere che il tuo metodo si chiama filtromedia(int[][]).

    Poi... all'interno di media usi i e j ma non sono dichiarati da nessuna parte...

    Sull'algoritmo in sè non mi esprimo, non ho tempo di guardarmelo tutto ^^
    Praticamente il problema era che java mi dava errore perché ho copiato una parte di testo da un PDF e dunque mi dava errore perché c'erano dei caratteri diversi nascosti. Ho risolto riscrivendo la parte copiata e con i tuoi aggiustamenti ed infatti è giusto. mi sembrava molto strano!!

    codice:
    public class ciao{  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[i][j]+" ");
    
    
                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; int i=rig; int j=col;
            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;
             }
          return -1;
        }   
                 
     }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.