Stampare elementi non duplicati array

di Anonimizzato13795 il
5 risposte
Dato un array ad esempio {1,1,1,3,4,4,5,}
devo stampare 1,3,4,5
Devo solo stampare i valori non creare un nuovo array o eliminare i duplicati dall''array di partenza.
Io ho iniziato a creare inizialmente un programma che trova i duplicati, funziona ma non fa quello che dovrebbe. Forse sto sbagliando approccio.
Qualcuno mi può dare dei consigli?
int main()
{
    srand(time(0));
    int dim=10;
    int numeri[dim];
    bool uguali=false;
    for(int i=0;i<dim;i++)
    {
        numeri[i]=rand()%5+1;
    }
    for(int i=0;i<dim;i++)
    {
        cout<<numeri[i]<<endl;
    }
    int i=0;
    int j=0;
    int k=0;
    while(i<dim/2)
    {
        while(j<dim/2)
        {
        if(numeri[i]==numeri[j+1])
            {
            cout<<"il valore "<<numeri[i]<<"duplica"<<endl;
            uguali=true;
        }
        j++;
        }
        i++;
    }


    return 0;
}

5 Risposte

  • Ma il vettore è sempre ordinato?
  • No il vettore non è sempre ordinato
  • Questa è un'idea, non l'unica ...
    
    	int v[] = {3,5,3,8,1,1,5,6,1,6};
    	int i, j;
    
    	for (i=0; i<9; i++)
    		for (j=i+1; j<10; j++)
    			if (v[i]>0 && v[i]==v[j]) v[j]=-v[j];
    
    	for (i=0; i<10; i++)
    		if(v[i]>0)
    			printf("%d ", v[i]);
    
    	printf("\n");
    
  • Grazie, ma scusa la testardaggine il funzionamento non mi è chiarissimo.
    Non ho capito il senso di fare v[j]=-v[j];
  • E' per "segnare" i duplicati
Devi accedere o registrarti per scrivere nel forum
5 risposte