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

    esercizio:confrontare righe di una matrice

    Un metodo controllaRighe che riceve una matrice M e due indici di riga a e b, e restituisce true se tutti gli
    elementi della riga di indice a di M appaiono anche nella riga di indice b di M.

    esempio:data la matrice m==>
    codice:
    1 4 3 5 6
    4 0 0 9 3
    3 4 3 7 4
    1 2 3 4 3
    6 2 8 5 6
    7 3 8 2 4
    indice di riga a=2 b=5
    il metodo deve restituire true perche tutti gli elementi della riga 2 di m appaiono anche nella riga 5 di m

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

    procedendo così mi restituisce true ma restituisce true anche se nella riga 5 compare solo un elemento della riga 2.quindi non va bene!!ho provato con un contatore però non va bene perchè se nella riga 5 ci fossero doppioni di elementi di 2 il contatore incrementa ma non è detto che tutti gli elementi vi compaiono!!

    invoco il vostro aiuto!!!un suggerimento su come procedere e in particolare che condizione ci metto nell if??

    GRAZIE

  2. #2
    Ciao allora i problemi sono più di uno a mio avviso .... Prima di tutto nell'istruzione return che ti fa uscire dal metodo restituendo il valore booleano . IN questo caso al primo controllo postivo il tuo programma esce sempre con valore true .
    Secondo gli indici degli array inziano da 0 e devi scorrerlo tutto .
    Se ho ben compreso il problema una soluzione express è questa :
    codice:
    public class Main {
    
        public static boolean controllarighe (int[][]m,int a,int b){
     int count = 0;
     int n_col = m[0].length;
     for (int i=0;i<n_col;i++){
     for (int j=0;j<m[0].length;j++){
       if (m[a][i]==m[b][j]){
        count++;
        break;
         }
     }
            }
      if (count == n_col)
       return true;
      else
       return false;
     }
    
        public static void main(String[] args) {
         int[][]m={{4,3,1,2,3},{4,0,0,9,3},{3,4,3,7,4},{1,2,3,4,3},{6,2,8,5,6},{7,3,8,2,4}};
         int a=0;
         int b=3;
         boolean k = controllarighe(m,a,b);
         System.out.print(k);
        }
    
    }
    TI dico però che se ti serve controllare se tutti gli elementi della riga a siano uguali a quelli della riga b devi modificare il codice .....

  3. #3
    grazie mille!!!

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.