Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278

    [C] come eliminare i doppioni da un array

    Sono un po' nuovo del C e non riesco a risolvere il mio problema.
    Ho cercato in rete e qualcosa ho trovato, ma non proprio specifico a quello che voglio fare io.

    Ho creato un array numerico in c classico:
    codice:
        {
            x=4;
           for (i=0;i<=3;i++)
            {
                ciccio = (arc4random() % x)+1;
               
                carta[i]=ciccio;
               
       
                 
           }
           }
    Ora però NON riducendo le posizioni del mio array, vorrei eliminare i valori doppi, ottenendo solo valori unici e di conseguenza :un array con valori casuali nelle posizioni, ma MAI ripetuti.
    Come posso fare?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quando generi il prossimo numero random, fai un ciclo per confrontarlo con tutti gli elementi dell'array gia' assegnati ... se non lo trovi, lo assegni al prossimo e continui, altrimenti lo generi nuovamente e ripeti il controllo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    mmm...
    Ho provato così, ma ugualmente dei valori mi si ripetono

    codice:
    {
    	int b;
    	int a;
    	int c;
        x=4;
        for (i=0;i<=3;i++)
        {
            ciccio = (arc4random() % x)+1;
    		
            carta[i]=ciccio;
    		
    	}
    	
    	for (a=0;a<=3;a++)
    	{
    		for (c=0;c<=3;c++)
    		{
    			if(a != c)
    			{
    			while(carta[a]==carta[c])
    			{
    				ciccio=(arc4random() % x)+1;	
    				carta[c]=ciccio;	
    		}
    			}
    		}
    		
    	}
    }
    Non capisco come mai.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    3
    perchè non ricontrolli tutti i valori dopo averli riassegnati

    prova con questo (non l'ho provato ma dovrebbe andare)
    codice:
    :
    :
    :
    ciccio = (arc4random() % x)+1;
    carta[0]=ciccio;
    control=1;
    
    for (i=1;i<=3;i++)
    {
         while control=1
         {
              control=0;
              ciccio = (arc4random() % x)+1;
    
              for(a=i-1;a=0;a--)
              {
                  if (carta[a]== ciccio)
                  {
                     control=1;
                     continue;
                  }
              }
          }
    carta[i]=ciccio;
    }
    :
    :
    :

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.