Funzione srand con tabella ascii

di palladino.al il
19 risposte

19 Risposte - Pagina 2

  • 
    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]);
    }
    }
    
  • 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
  • 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.
  • 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.
  • 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