Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di adf89
    Registrato dal
    Jan 2010
    Messaggi
    21

    problema controllo array

    Salve a tutti..sono sempre io...quello che ha difficoltà con le piccole cose...

    questa volta vi giuro che ho provato anche a scriverlo a mano ma nn ci sn arrivato...

    devo verificare che in ogno posizione del vettore ce ne siano almeno 2 uguali...

    io ho scritto così
    codice:
    class Provascansione2 { 	
    public static void main (String []args) 	{  	
    	int [] v={2,2,5,7,8}; 	
    	int a=0; 	
    	for(int j=0; j<v.length; j++) 
    		a= v[j]; 
     		for(int i=0; i<v.length; i++)
      		if(a==v[i]) 		
    { 			System.out.println("ok"); 
    		} 		
    else System.out.println("non ok"); 
    	}
     }
    ma ovviamente nn esce...dove sbaglio?? vi prego aiutatemi...grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    ti sei perso le parantesi graffe che racchiudono i cicli for...

    secondo quanto hai scritto...il primo ciclo for (quello su j) esegue solo l'istruzione a=v[j], idem il secondo...

    prova così:


    codice:
    class Provascansione2 { 	
    public static void main (String []args) 	{  	
    	int [] v={2,2,5,7,8}; 	
    	int a=0; 	
    	for(int j=0; j<v.length; j++)
           {
    		a= v[j]; 
     		for(int i=0; i<v.length; i++)
                   {
      		      if(a==v[i]) 		
                         {
     			      System.out.println("ok"); 
    		      } 	  	
                          else
                         {
                                  System.out.println("non ok"); 
                         }
                  }
            }
    }
     }
    Jekkil

  3. #3
    Utente di HTML.it L'avatar di adf89
    Registrato dal
    Jan 2010
    Messaggi
    21
    fino a qui ci sono...il problema è che viene verificato due volte se ci sono due numeri uguali...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da adf89
    fino a qui ci sono...il problema è che viene verificato due volte se ci sono due numeri uguali...
    Da come hai fatto i cicli, ogni numero viene confrontato con ogni numero, quindi una coppia di indici rispondenti a numeri uguali viene incontrata due volte.
    Evita questo e dovresti essere a posto.
    al volante son nervoso

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Originariamente inviato da adf89
    fino a qui ci sono...il problema è che viene verificato due volte se ci sono due numeri uguali...
    non ho capito...fai un esempio?
    Jekkil

  6. #6
    Utente di HTML.it L'avatar di adf89
    Registrato dal
    Jan 2010
    Messaggi
    21
    ad esempio se prendo in considerazione il primo numero (cioè =2) lui vede se ce ne sono altri...e infatti ne trova un altro... poi però prende il secondo 2 e ricontrolla se ce ne sono...quindi alla fine è come se ce ne fossero 4...

    ehm...sono stato chiaro??? :-)

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    chiarissimo

    be in questo caso puoi procedere in diversi modi.

    Potresti tenere traccia dei numeri che hai già controllato...e quindi se incontri un numero che hai già controllato non esegui il ciclo e vai avanti passando al numero dopo,

    altrimenti potresti confrontare un numero solamente con i numeri nelle posizioni che lo seguono, tanto se lo stesso numero è presente prima lo hai già controllato...ti è chiaro questo procedimento?
    Jekkil

  8. #8
    Utente di HTML.it L'avatar di adf89
    Registrato dal
    Jan 2010
    Messaggi
    21
    chiarissimo...il problema è che se per esempio ci sono tre numeri uguali {2,2,2...ecc}

    ed io imposto che non deve controllare i precedenti, quando andrò a scansionare il numero successivo controllerà però quello davanti...

    esempio: se scansiono il primo 2 lui me ne trova altri 2...se scansiono il secondo 2 (e imposto che nn deve scansionare quelli precedenti) mi troverò sempre quello che ha davanti...ovvero il terzo 2...e così via se ce ne sono altri... sono stato chiaro???

    Grazie per la disponibilità cmq...

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da adf89
    chiarissimo...il problema è che se per esempio ci sono tre numeri uguali {2,2,2...ecc}

    ed io imposto che non deve controllare i precedenti, quando andrò a scansionare il numero successivo controllerà però quello davanti...

    esempio: se scansiono il primo 2 lui me ne trova altri 2...se scansiono il secondo 2 (e imposto che nn deve scansionare quelli precedenti) mi troverò sempre quello che ha davanti...ovvero il terzo 2...e così via se ce ne sono altri... sono stato chiaro???

    Grazie per la disponibilità cmq...
    Dichiara un vettore di boolean lungo come il vettore in ingresso.
    Ogni volta che "tratti" un valore, imposti a vero, o falso a seconda della logica che più preferisci.
    In base a questo valore, sai se quella posizione l'hai già trattata oppure no.
    E implementa anche il fatto che controlli un valore solo con quelli che stanno avanti. La complessità dell'algoritmo ne risentirà in modo benefico (credo da n^2 a n*log(n))
    al volante son nervoso

  10. #10
    Utente di HTML.it L'avatar di adf89
    Registrato dal
    Jan 2010
    Messaggi
    21
    perdonami...ho capito il tuo ragionamento...il problema è che per assegnare true o false devo fare una scansione adeguata...ed è proprio questo che mi blocca...

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