[C] Ripetizioni in un array e posizione della ripetizione

di il
1 risposte

[C] Ripetizioni in un array e posizione della ripetizione

Salve a tutti! Propongo questo quesito, al quale credo di aver trovato risposta e vorrei averne una conferma da voi.
Il mio programma deve ricercare tra tutti gli elementi dell'array, il primo elemento che si ripete e stampare la posizione della prima ripetizione.
Io ho pensato di inserire una algoritmo simile al bubble sort, nel senso che inserisco due for uno con indice 1 e uno con indice j e così confronta tutti gli elementi se trova ripetizioni. E' giusto?
void cerca_rip (int v[], int dim){
	int contatore = 0;
	int posizione;
	int i, j;
	
	for (i=0; i<dim; i++){
		for (j=0; j<i; j++){
			if (v[j] == v[i]){
				contatore ++;
			}
			
			if (v[j] == v[i] && contatore == 1){
				printf ("\nPrimo elemento ripetuto nel vettore: %d\n\n", v[i]);
				printf("Prima ripetizione in posizione %d", i);	
			}
		}
	}
}
Il contatore vede quanti sono gli elementi diversi ripetuti, nel caso contatore == 1 prendo solo il primo elemento ripetuto e mi stampo qual è e la sua posizione.

E' corretto?

1 Risposte

  • Re: [C] Ripetizioni in un array e posizione della ripetizione

    Sembrerebbe corretto; tuttavia non c'è bisogno del contatore, in fondo una ripetizione ce l'hai quando
    (v[i]==v[j]) && (i!=j)
    Inoltre puoi evitare di fare il confronto (i!=j) semplicemente impostando il ciclo con j che parte dal successivo i
       for (i=0; i<dim-1; i++){
          for (j=i+1; j<dim; j++){
    Se (v==v[j]) allora in j avrai la posizione della prima ripetizione.
    Prova la cosa su carta.
Devi accedere o registrarti per scrivere nel forum
1 risposte