Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Dubbio esercizio java

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232

    Dubbio esercizio java

    Ho un esercizio da fare però leggendo il testo mi è venuto un dubbio il testo dice:
    Prendere input un array bidimensionale frastagliato A di byte ed un array S di interi, e restitusica un boolean che indichi se esiste in S un valore pari alla somma degli elementi di una qualche colonna di A (La somma di ogni colonna deve essere calcolata una volta sola.
    Non si possono usare array ausiliari. Attenzione agli elementi mancanti). Quando dice calcolare una volta sola... sapete come si intende??!!

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Evidentemente è una domanda che andrebbe posta a chi ti ha assegnato l'esercizio... sbaglierò, ma a me pare abbastanza evidente che è un modo per indirizzarti dicendo che per ogni elemento di S non devi andare a rifare tutte le somme delle colonne di A, che in termini computazionali è chiaramente più oneroso

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Dubbio esercizio java

    Originariamente inviato da 5t4rdu5t
    La somma di ogni colonna deve essere calcolata una volta sola.
    Non si possono usare array ausiliari.
    Con queste due precisazioni, allora c'è 1 solo modo per farlo. Scansioni l'array A per colonne e per ogni colonna calcoli la somma (quindi ogni colonna la tratti 1 volta sola!) e fai una scansione nell'array S. Se in S trovi la somma restituisci subito true. Alla fine di tutto restituisci false.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    mmm... una cosa del genere potrebbe essere questa????
    codice:
     public static boolean metodo(byte[][]A, byte[] S){
    		int sumColum=0;
    		for(int j=0; j<A[0].length; j++){
    			sumColum=0;
    
    			for(int i=0; i<A.length; i++){
    				for(int k=0; k<S.length; k++){
    				sumColum+=A[i][j];
    					
    					if(sumColum==S[k])
    						return true;
    dm ho esame!!! devo chiarire il dubbio!

  5. #5
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    - hai detto che l'array A è frastagliato, quindi prima di tutto devi trovare la riga avente lunghezza massima: la condizione di uscita dal primo for è che "j" sia minore di questo "max", non di A[0].length;
    - sempre poichè l'array è frastagliato, prima di aggiungere un valore alla somma devi verificare che questo valore esista (la riga potrebbe essere più "corta");
    - il ciclo su S devi spostarlo fuori dal for più interno, altrimenti potrebbe essere che "sumColum" sia uguale a "S[k]" in un momento in cui non hai ancora finito di calcolare la somma degli elementi della colonna.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    si vabbè ora ci do un occhi ai for... la cosa che mi preme di più è qst somma fatta una volta sola

  7. #7
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Ok, ma sulla logica ad alto livello hai già avuto risposta. Ora devi sistemare l'algoritmo, oltre che l'implementazione...

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    ho messo l'if ora ma nn capisco perchè la somma nn viene:
    codice:
    public static boolean metodo(byte[][]A, byte[] S){
    		int sumColum=0;
    		for(int j=0; j<A[0].length; j++){
    			sumColum=0;
    			
    			for(int i=0; i<A.length; i++){
    				if(j<A[i].length) 
    				for(int k=0; k<S.length; k++){
    				sumColum+=A[i][j];
    					System.out.println(sumColum);
    					
    					if(sumColum==S[k])
    						return true;
    				}
    			}
    		}
    		return false;

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da 5t4rdu5t
    ho messo l'if ora ma nn capisco perchè la somma nn viene:
    Scusa ma innanzitutto desa ti ha già correttamente detto che prima di tutto devi calcolare il numero massimo di colonne. Questo lo fai con un ciclo sulle righe e prendendo sempre il max del numero di elementi (le colonne cioè) di ogni riga.

    Poi fai un ciclo sulle colonne (non le righe) e per ogni colonna fai un ciclo sulle righe. Ma solo se fisicamente c'è la cella a quella riga/colonna allora fai il resto!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    si ho capito che devo mettere qst valore max ma per come ho il main nn mi esce fuori dal range.. nn capisco solo il fatto ke la somma nn risulta..! e poi per come è imposta la somma viene eseguita una volta sola???!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.