Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185

    dubbio su esercizio java

    Ciao a tutti,
    questo è il codice dell esercizio java che dovevo fare:
    codice:
    int[] valDistPD(int[] v){
    	int[] array={0,0};
    	boolean dist;
    	for(int i=0;i<v.length;i++){
    		dist=true;
    		for(int j=0;j<i;j++){
    			if(v[j]==v[i])
    				dist=false;			
    		}
    		if(dist)
    			if(v[i]%2==0)
    				array[0]++;
    			else
    				array[1]++;
    	}
    	for (int scorri=0;scorri<array.length;scorri++){
    		System.out.println(array[scorri]);
    	}
    	return array;		
    }
    Quello che non ho capito è come mai il secondo for ha la condizione di guardia j<i, io pensavo che doveva essere j<v.length, ovvero ad ogni elemento indicato dalla i, j scorre tutto il vettore per vedere se è distinto o no. Ma facendo j<v.length non funziona...
    Se mi serve anche il testo dell'esercizio ditemelo che lo posto.

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Meglio se posti anche la consegna dell' esercizio.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    Originariamente inviato da Who am I
    Meglio se posti anche la consegna dell' esercizio.
    in che senso la consegna

  4. #4
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Il testo dell' esercizio, la richiesta.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    eccolo
    codice:
    Scrivere un metodo, detto valDistPD, che riceve come parametro
    un array v di interi positivi e restituisce un array di due elementi
    di tipo intero. 
    Il primo elemento di tale array indica il numero di elementi pari distinti
    contenuti nell'array v mentre  il secondo elemento indica il numero di 
    elementi dispari distinti contenuti nell'array v.
    
    Ad esempio, se v e' il vettore {5, 3, 8, 3, 7, 2, 7, 11, 8, 3, 14, 17}, 
    allora il metodo dovrà ritornare l'array {3, 5} in quanto nel vettore v
    ci sono 3 valori pari distinti (2, 8 e 14) e 5 valori dispari distinti 
    (3, 5, 7, 11, 17).

  6. #6
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510

    Re: dubbio su esercizio java

    Originariamente inviato da dennis87
    Quello che non ho capito è come mai il secondo for ha la condizione di guardia j<i, io pensavo che doveva essere j<v.length, ovvero ad ogni elemento indicato dalla i, j scorre tutto il vettore per vedere se è distinto o no. Ma facendo j<v.length non funziona...
    Se mi serve anche il testo dell'esercizio ditemelo che lo posto.
    Hai ragione, la condizione deve essere i<v.length, altrimenti potrebbe benissimo capitare che il primo elemento è uguale al secondo, ma nella prima iterazione del for più esterno i vale zero, per cui il numero viene conteggiato come distinto.
    Aggiungendo la condizione che dist è false solo se i è diverso da j, altrimenti ogni numero è uguale a se stesso e i risultati sarebbero sempre zero:

    codice:
    public int[] valDistPD(int[] v){
        	int[] array={0,0};
        	boolean dist;
        	for(int i=0;i<v.length;i++){
        		dist=true;
        		for(int j=0;j<v.length;j++){
        			if(v[j]==v[i] && i!=j)
        				dist=false;			
        		}
        		if(dist)
        			if(v[i]%2==0)
        				array[0]++;
        			else
        				array[1]++;
        	}
        	return array;		
        }

  7. #7
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    ma il codice che hai postato al primo post funziona? perche cosi ad occhio sembra che non abbia bisogno di nessuna correzione...

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    si si, il codice al primo post funziona, è solo che non capivo la condizione di guardia del secondo for..

  9. #9

    Moderazione

    Per Java c'è la sezione apposita, sposto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    non è necessario sapere se l'elemento i-esimo ha dei doppioni piu avanti nell'array ma solo se è stato gia verificato o se è la prima volta che lo si incontra. Per questo basta semplicemente scorrere l'array da 0 a i-1.

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.