Oppure

Loading
21/10/08 13:28
giocala88
Salve ragazzi ho un piccolo problema...non capisco perchè questo programma non termina come dovrebbe...qualcuno potrebbe darne una controllata?...grazie anticipatamente...

#include <stdio.h>

#include <time.h>

#define INTERVAL 91

typedef enum {FALSE, TRUE} boole_t;

boole_t Estratti[INTERVAL];

int main()
{
int i;

for (i = 0; i < INTERVAL; ++i)
{

Estratti[i] = FALSE;
}


do
{
i = rand() % INTERVAL;

if (!Estratti[i])
{

Estratti[i] = TRUE;

printf("\n%d", i);
}
}
while (i < INTERVAL);

return 0;
}


aaa
21/10/08 14:09
gioser
il secondo ciclo non termina perché è matematicamente sbagliato.

    
    do
    {
        i = rand() % INTERVAL;
        ...
    }
    while (i < INTERVAL);


un qualsiasi numero modulo INTERVAL darà sempre un risultato minore di INTERVAL.

l'operatore % (modulo) restituisce il resto della divisione

rand() % 91 pertanto darà sempre un risultato compreso tra 0 e 90, estremi inclusi

se vuoi effettuare il ciclo per INTERVAL volte, devi usare un'altra variabile.

    int cont = 0
    ...
    do
    {
        i = rand() % INTERVAL;
        ...
    }
    while (cont++ < INTERVAL);



Ciao :)
aaa