[C] Posizione della ripetizione in un array

di il
20 risposte

20 Risposte - Pagina 2

  • Re: [C] Posizione della ripetizione in un array

    Ecco finito il programma
    La funzione di cerca_rip così è completa.
    
    void cerca_rip (int v1[], int dim) {
    	int contatore = 0;
    	int i = 0;
    	int a;
    	int posizione;
    	
    	printf ("Inserire l'elemento che si desidera controllare: ");
    	scanf ("%d", &a);
    	
    	for (i=0; i<dim; i++) {	
    		if (v1[i] == a) {
    			contatore++;
    		}
    		if (contatore == 2) {
    			posizione = i+1;
    		}
    	}
    	
    	if (contatore == 2) {
    		posizione = i+1;
    	}
    	
    	if (contatore == 0) {
    		printf ("L'elemento non e' presente nel vettore.\n");
    	}
    	else {
    		if (contatore == 1) {
    			printf ("Non ci sono ripetizioni.\n");
    		}
    		else {
    			if (contatore >=2) {
    			printf ("L'elemento %d e' ripetuto nel vettore.\n\n", a);
    			printf("Prima ripetizione in posizione %d", posizione);
    			}
    		}
    	}
    			
    }
    
    Ho inserito un altro ciclo if nel ciclo for con la condizione di contatore ==2 così come mi avevi detto.
  • Re: [C] Posizione della ripetizione in un array

    Ho inserito un altro ciclo if nel ciclo for con la condizione di contatore ==2 così come mi avevi detto.
    A parte che if non è un ciclo, io non ti avevo detto di fare così
    Il salvataggio della posizione deve avvenire nel caso (v1 == a) e che (contatore==2).
    Mi sembra che tu stia affrontando il problema a forza di tentativi e in questo modo non impari niente.
    Per uscirne fuori devi riflettere sul ciclo e magari fare un flowchart su carta; poi se serve, puoi inserire delle printf "di debug" ad ogni passata del ciclo per capire cosa fa il tuo programma.
  • Re: [C] Posizione della ripetizione in un array

    Ciao! Anche io ho avuto lo stesso problema tuo, e ho risolto seguendo i consigli di candaluar. Nell'istruzione for devi salvarti la posizione qualora trovi elementi uguali. E' bene inserire printf di debug così come consigliato, nel senso, ti visualizza quanto è il contatore e la posizione così capisci se hai fatto bene o cosa stai sbagliando.

    Inoltre per non aprire un nuovo thread posso chiedere come uscire da una fase di stallo di un esercizio simile a questo?

    Il mio programma deve comunque ricercare ripetizioni nell'array ma non dell'elemento che io inserisco ma in automatico.
    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?
    int cont = 0;
    	int pos;
    	int i, j;
    	
    	for (i=0; i<dim; i++){
    		for (j=0; j<dim-i; j++){
    			if (v[i] == v[j]){
    				cont++;
    			}
    		}
    	}
    Andando a inserire un printf del cont alla fine dei for non mi esce un contatore delle rpietizioni, quini suppongo ci sia qualcosa di sbagliato.
  • Re: [C] Posizione della ripetizione in un array

    Anche se simile, non puoi scrivere all'interno di un thread altrui per chiedere roba tua !

    Qui si deve continuare a parlare del problema di Lukas, non si può rispondere a te!
  • Re: [C] Posizione della ripetizione in un array

    Scusami, hai ragione, ma siccome era inerente, volevo evitare di aprire un thread simile.
  • Re: [C] Posizione della ripetizione in un array

    I thread non si pagano e non ha senso "risparmiarli", il forum è fatto apposta, ognuno crea un proprio thread, altrimenti scriveremmo tutti i problemi simili in un unico thread infinito, con risposte multiple a tanti utenti e caos megagalattico generale.
Devi accedere o registrarti per scrivere nel forum
20 risposte