AIUTO Esercizio semplice in C

di il
18 risposte

AIUTO Esercizio semplice in C

Salve a tutti, mi potreste aiutare a svolgere questa traccia? :

Scrivere un programma che produca 20 numeri casuali compresi tra 1 e 20. Il
programma dovrà immagazzinare in un vettore tutti i valori e successivamente eliminare
i valori duplicati.



Io ci rinuncio, è da stamattina che le provo tutte , ma non riesco a fargli eliminare i valori duplicati.
Vi lascio di seguito il mio codice sorgente, correggetemi dove sbaglio

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand( time ( NULL ) );

int i,j;
int num[21] ;

for(i = 1; i <= 20; i++){

num = 1 + rand() % 20;

for (j= i-1; j<= i-1; j++){
num[j] = i-1;

if (num != num[j]) {
printf("%5d\n", num);
}
}

}
return 0;
}

18 Risposte

  • Re: AIUTO Esercizio semplice in C

    Ci sono un paio di errori nel programma...Soprattutto nella logica dell'esercizio.
    Non è chiara una cosa però, cancellare i valori duplicati cosa vuol dire? Impostare per esempio a 0 questi valori duplicati? Oppure creare un nuovo array con i valori non duplicati oppure non so un'altra soluzione...

    Per quanto riguarda l'esercizio da te svolto l'esercizio sottolinea che PRIMA devi generare questi 20 valori compresi tra 1 e 20 e DOPO trovare i suoi valori duplicati...Quindi il ciclo for non può essere unico...
  • Re: AIUTO Esercizio semplice in C

    Si, io vorrei creare un secondo vettore dove compaiano i valori non duplicati, solo che non so come fare per inserirli nel nuovo vettore!
  • Re: AIUTO Esercizio semplice in C

    I = 0

    Per ogni elemento n del primo vettore{
    Se n non è presente nel secondo vettore {
    Secondo vettore = n
    i++
    }
    }



    suggerimento: ogni volta basta controllare i primi i elementi del secondo vettore
  • Re: AIUTO Esercizio semplice in C

    Non riesco a comprendere cosa dovrebbe fare questo
    for (j= i-1; j<= i-1; j++){
    num[j] = i-1;

    if (num != num[j]) {
    printf("%5d\n", num);
    }
  • Re: AIUTO Esercizio semplice in C

    Ma con valori non duplicati intendi proprio quelli che non hanno doppioni nel vettore oppure un nuovo vettore senza doppione?

    es. vettore 1 2 3 3 4 4 5 5

    Il tuo output dovrà essere:

    1 2 3 4 5

    oppure

    1 2?
  • Re: AIUTO Esercizio semplice in C

    PS: non ci avevo proprio pensato! L'algoritmo di prima funziona per creare un vettore senza doppioni. Altrimenti cambia tutto!
  • Re: AIUTO Esercizio semplice in C

    Si, deve dare in output un vettore del tipo 12345
  • Re: AIUTO Esercizio semplice in C

    ale99 ha scritto:


    i = 0

    Per ogni elemento n del primo vettore{
    Se n non è presente nel secondo vettore {
    Secondo vettore = n
    i++
    }
    }



    suggerimento: ogni volta basta controllare i primi i elementi del secondo vettore


    Questa soluzione suggerita allora dovrebbe funzionare perfettamente
  • Re: AIUTO Esercizio semplice in C

    Grazie ragazzi per le risposte, ma o sono rimbambito io o non so.... .Potreste completarmi il programma e vedere se gira? Perché non capisco dove inserire quelle righe di codice che mi avete consigliato voi!
  • Re: AIUTO Esercizio semplice in C

    La pappa pronta non è ammessa e neanche la soluzione completa degli esercizi.
    Fai uno sforzo, prova a scrivere il codice in base ai suggerimenti e se ne parla.
    A che ti servirebbe avere tutto il codice?
  • Re: AIUTO Esercizio semplice in C

    Ti ringrazio, proverò come hai detto tu!
  • Re: AIUTO Esercizio semplice in C

    Su forza ti aiuto un pò di più:

    Crea un ciclo for per scorrere il vettore dei 20 numeri.
    Crea un altro ciclo for per scorrere il nuovo vettore controllando solo gli elementi inseriti fino ad ora.
    Crea un controllo, in questo secondo for, che verifiche se i due elementi uno del vettore dei 20 numeri e l'altro di quello nuovo siano uguale. In caso affermativo notificalo in qualche modo.
    Alla fine del primo ciclo for e fuori dal secondo controlla attraverso la notifica se devi o non devi inserire l'elemento del primo vettore preso in esame...In caso affermativo aggiungilo...

    Butta giù il codice, siamo qui per aiutarti.
  • Re: AIUTO Esercizio semplice in C

    Ragazzi io ho provato così, però mi stampa 20 "1" ....


    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main()
    #define uguali 0
    #define diversi 1
    {
    srand( time ( NULL ) );

    int i,j;
    int num[21] ;
    int num2[21];


    for(i = 1; i <= 20; i++){

    num = 1 + rand() % 20;

    for (j=1; j<= 20; j++){

    if (num == num2[j]) {

    num2[j] = num = uguali;
    }
    else
    num2[j] = num = diversi;



    }
    if (num2[j] = num = diversi) {
    printf("%5d\n", num2[j]);
    }
    }
    return 0;
    }
  • Re: AIUTO Esercizio semplice in C

    Controlla l'ultimo if.. e utilizza i tag
     per postare del codice sul forum.
Devi accedere o registrarti per scrivere nel forum
18 risposte