Problemi metodi

matteo199331
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

Risposte
Summerwind78
Prima di tutto, tu quali tentativi hai fatto?

Seconda cosa, in che linguaggio vuoi scrivere questi metodi?

matteo199331
in java, il problema è che non riesco proprio ad impostarlo...

minomic
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.

:smt039

matteo199331
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..

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

}

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

}

matteo199331
tutto chiaro, grazie di cuore, nel secondo esercizio poi devo ripeterlo per le colonne quindi creare sommaPrimacolonna, giusto?

minomic
Sì esatto.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.