Problemi metodi
salve, ho un problema ha fare questi due esercizi con i metodi, qualcuno mi può aiutare?
scrivere un metodo che, passati come parametri due array monodimensionali di int, restituisce true se sono identici, false se sono diversi o sono di dimensione diversa;
scrivere un metodo che,passata come parametro una matrice di int, verifica se le somme di tutte le righe siano uguali tra loro e stessa cosa per le colonne
scrivere un metodo che, passati come parametri due array monodimensionali di int, restituisce true se sono identici, false se sono diversi o sono di dimensione diversa;
scrivere un metodo che,passata come parametro una matrice di int, verifica se le somme di tutte le righe siano uguali tra loro e stessa cosa per le colonne
Risposte
Prima di tutto, tu quali tentativi hai fatto?
Seconda cosa, in che linguaggio vuoi scrivere questi metodi?
Seconda cosa, in che linguaggio vuoi scrivere questi metodi?
in java, il problema è che non riesco proprio ad impostarlo...
Ciao, partiamo dal primo.
I passi da fare per verificare quanto richiesto sono essenzialmente questi:
- verifichi che la dimensione degli array sia uguale (e lo puoi fare facilmente con la proprietà length)
- se le dimensioni sono diverse restituisci immediatamente false, altrimenti vai avanti
- scorri i due array e li confronti elemento-per-elemento. Se trovi una coppia di elementi diversi tra loro, allora ti fermi immediatamente e restituisci false. Se invece riesci ad arrivare fino in fondo agli array, allora significa che sono uguali, quindi restituisci true.
Prova a buttare giù un po' di codice e poi vediamo di completare insieme.
I passi da fare per verificare quanto richiesto sono essenzialmente questi:
- verifichi che la dimensione degli array sia uguale (e lo puoi fare facilmente con la proprietà length)
- se le dimensioni sono diverse restituisci immediatamente false, altrimenti vai avanti
- scorri i due array e li confronti elemento-per-elemento. Se trovi una coppia di elementi diversi tra loro, allora ti fermi immediatamente e restituisci false. Se invece riesci ad arrivare fino in fondo agli array, allora significa che sono uguali, quindi restituisci true.
Prova a buttare giù un po' di codice e poi vediamo di completare insieme.

grazie mille, scusa se rispondo adesso ma ho avuto un altro esame e non ho studiato molto informatica...
il primo esercizio faccio fatica ancora a farlo, non so bene come vedere la dimensione, ho provato a fare il secondo:
int sommaRiga;
for(int i=0; i
{
sommaRiga = 0;
for(int j=0; j.length; j++)
{
sommaRiga = sommaRiga + +mat[j];
}
System.out.println("La somma della riga "+i+" e' "+sommaRiga);
}
quindi ho sommato separatamente per ciascuna riga, però non riesco a vedere se sono uguali, devo utilizzare un if, però non riesco a capire cosa confrontare..
il primo esercizio faccio fatica ancora a farlo, non so bene come vedere la dimensione, ho provato a fare il secondo:
int sommaRiga;
for(int i=0; i
sommaRiga = 0;
for(int j=0; j
{
sommaRiga = sommaRiga + +mat[j];
}
System.out.println("La somma della riga "+i+" e' "+sommaRiga);
}
quindi ho sommato separatamente per ciascuna riga, però non riesco a vedere se sono uguali, devo utilizzare un if, però non riesco a capire cosa confrontare..
Guardiamo il primo: ti posto una possibile soluzione. Poi tu la guardi e vedi se ti è chiara. Altrimenti ne riparliamo...
public class ArrayUguali { static boolean sonoUguali(int[] arr1, int[] arr2) { // se le dimensioni sono diverse allora gli array // sono sicuramente diversi if(arr1.length != arr2.length) return false; for(int i=0; i<arr1.length; i++) { // se trovo due elementi diversi allora gli // sono diversi if(arr1[i] != arr2[i]) return false; } // se arrivo fino a qui significa che ho superato // tutti i controlli: gli array sono uguali return true; } public static void main(String[] args) { int[] arr1 = new int[]{1, 2, 3, 4, 5, 6}; int[] arr2 = new int[]{1, 2, 3, 4, 5, 6}; int[] arr3 = new int[]{0, 2, 3, 4, 5, 6}; System.out.println(sonoUguali(arr1, arr2)); System.out.println(sonoUguali(arr1, arr3)); } }
Già che ci siamo posto una possibile soluzione anche per il secondo. Non eri troppo lontano!
public class MatriceSomme { static boolean sommeRigheUguali(int[][] matrice) { /* L'algoritmo che voglio seguire e' questo: calcolo la somma degli elementi della prima riga e la memorizzo in una variabile. Appena trovo una riga con una somma diversa restituisco false. Altrimenti true. */ int numRighe = matrice.length; int numColonne = matrice[0].length; int sommaPrimaRiga = 0; int somma; for(int i=0; i<numRighe; i++) { // codice eseguito su ogni riga somma = 0; // somma degli elementi della riga for(int j=0; j<numColonne; j++) { somma += matrice[i][j]; } if(i == 0) { // stiamo considerando la prima riga sommaPrimaRiga = somma; } else { // riga diversa dalla prima if(somma != sommaPrimaRiga) return false; } } // se arrivo fino a qui significa che ho superato // tutti i controlli return true; } public static void main(String[] args) { int[][] matrice1 = new int[][]{{1, 2, 3}, {4, 5, 6}}; int[][] matrice2 = new int[][]{{1, 2, 3}, {0, 0, 6}}; System.out.println(sommeRigheUguali(matrice1)); System.out.println(sommeRigheUguali(matrice2)); } }
tutto chiaro, grazie di cuore, nel secondo esercizio poi devo ripeterlo per le colonne quindi creare sommaPrimacolonna, giusto?
Sì esatto.