Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    esercizio sulle diagonali non principali di una matrice

    buonasera a tutti!!!

    Dovrei implementare un metodo che riceve una matrice quadrata di interi M e restituisce true se e solo se, partendo da ciascun elemento e della prima riga di M, ad eccezione dell’ultimo, e muovendosi in direzione sud-est, si incontra almeno un altro elemento di valore uguale ad e.

    Praticamente dovrei scandirmi la diagonale principale della matrice e le sopradiagonali e verificare che lungo esse ci siano due elementi uguali..la diagonale principale me la scndisco ponendo l indice di riga uguale a quello di colonna e fin qui ok..il problema sorge quando devo scandire le sopradiagonali..qualcuno può aiutarmi??


    grazie!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    allora, ovviamente si tratta di algoritmi più che di programmazione vera e propria. Il ragionamento vale per qualsiasi linguaggio.

    codice:
    M[r,c] = Matrice con r righe e c colonne (indici da 0 a r-1, da 0 a c-1)
    
    Diagonale principale: m0,0  m1,1  m2,2 ... mk,k
    
    Sopra diagonale 1: m0,1  m1,2  m2,3
    Sopra diagonale 2: m0,2  m1,3  m2,4
    
    Sopra diagonale k: m0,k  m1,k+1  m2,k+2
    Quindi dovrai fare 2 cicli annidati, righe e colonne. Con l'accortezza che il ciclo sulle colonne si ferma a indice colonna < c-1 e dove aggiungi l'offset colonna all'indice di riga per determinare l'indice colonna:

    codice:
    for (int j = 0; j < M[0].length-1; j++) {  // colonne
      for (int i = 0; i < M.length; i++) { //righe
        //elemento (sopra) diagonale = M[i][i+j]
      }
    }
    salvo errori da domenica mattaina e sabato notte tribolato.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    grazie andrea...

  4. #4
    Ho provato ad implementare il metodo in questo modo,aiutandomi con un metodo di supporto ma non capisco perche non esce cavolo:non trovo l'errore..potete dargli un occhiata?

    codice:
    public static boolean verificadiagonale (int[][]m){
    	for(int j=0;j<m[0].length-1;j++)
    			if (sottometodo(m,j)){
    					return true;
    			}
    			return false;
    }
    
    public static boolean sottometodo (int[][]m,int j){
         for (int i = 1; i < m.length ; i++) { 
    		if(m[i][j+i]==m[0][j])
    			return true;
    				  
    	}
    			return false;
    		}
           
        public static void main(String[] args) {
    		int[][]m={{2,0,3,4,9},
    				  {3,0,1,2,4},
    				  {8,0,13,0,3},
    				  {0,7,2,2,7},
    				  {1,5,1,6,4}};
    		boolean b=verificadiagonale (m);
    		System.out.print(b);
    
    	}

  5. #5
    Scusate il primo pezzo di codice è questo:


    codice:
    public static boolean verificadiagonale (int[][]m){
     	for(int j=0;j<m[0].length-1;j++) 			
                if (sottometodo(m,j)){
     		return true;
     		} 
    		return false; 
              }

  6. #6
    non capisco perchè non visualizza il codice cmq è questo:

    public static boolean verificadiagonale (int[][]m){

    for(int j=0;j<m[0].length-1;j++)
    if (sottometodo(m,j)){
    return true;
    }
    return false;
    }

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.