Funzione srand con tabella ascii

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Funzione srand con tabella ascii

    
    int main(){
    
    srand(time(NULL));
    char lettere[8];
    int valido = 0;
    int i=0;
    
    for(i=0; i<8; i++){
    
    do {
    		lettere[i] = '!' + rand() % 'z';
    		if ((lettere[i] >='!' && lettere[i] < '&')
                || (lettere[i] >= '?' && lettere[i] <= '@')
                || (lettere[i] >= '0' && lettere[i] <= '9')
    			|| (lettere[i] >= 'a' && lettere[i] <= 'z')
    			|| (lettere[i] >= 'A' && lettere[i] <= 'Z'))
    			valido = 1;
    	} while(!valido);
    printf("%c", lettere[i]);
    }
    }
    
  • Re: Funzione srand con tabella ascii

    La variabile valido va azzerata all'interno del ciclo

    Guarda il codice della prima risposta e fai attenzione a dove era azzerata la variabile valido
  • Re: Funzione srand con tabella ascii

    Personalmente trovo molto brutto quell'uso del do while perché ti tocca leggere il codice fino alla fine prima di capire la condizione di terminazione. Mettendola all'inizio non cambierebbe niente se non la leggibilità del codice.

    Un modo alternativo potrebbe essere di costruire un array dei caratteri validi, prendere un random e usarlo come indice.
  • Re: Funzione srand con tabella ascii

    nicolap ha scritto:


    Personalmente trovo molto brutto quell'uso del do while perché ti tocca leggere il codice fino alla fine prima di capire la condizione di terminazione. Mettendola all'inizio non cambierebbe niente se non la leggibilità del codice.

    Un modo alternativo potrebbe essere di costruire un array dei caratteri validi, prendere un random e usarlo come indice.
    Ovviamente sono pareri personali, ma se io guardo questo codice con il do while riesco a capire più intuitivamente rispetto al while.
  • Re: Funzione srand con tabella ascii

    oregon ha scritto:


    La variabile valido va azzerata all'interno del ciclo

    Guarda il codice della prima risposta e fai attenzione a dove era azzerata la variabile valido
    ho risolto...grazie...
Devi accedere o registrarti per scrivere nel forum
19 risposte