Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - programma non termina
Forum - C/C++ - programma non termina

Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 15:28
Martedì, 21/10/2008
Salve ragazzi ho un piccolo problema...non capisco perchè questo programma non termina come dovrebbe...qualcuno potrebbe darne una controllata?...grazie anticipatamente...

Codice sorgente - presumibilmente Plain Text

  1.  

#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 = FALSE;
    }


    do
    {
        i = rand() % INTERVAL;

        if (!Estratti)
        {

            Estratti = TRUE;

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

    return 0;
}



PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 16:09
Martedì, 21/10/2008
il secondo ciclo non termina perché è matematicamente sbagliato.

Codice sorgente - presumibilmente C/C++

  1. do
  2.     {
  3.         i = rand() % INTERVAL;
  4.         ...
  5.     }
  6.     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.

Codice sorgente - presumibilmente C/C++

  1. int cont = 0
  2.     ...
  3.     do
  4.     {
  5.         i = rand() % INTERVAL;
  6.         ...
  7.     }
  8.     while (cont++ < INTERVAL);



Ciao :)

PM Quote