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++ - problema programma random
Forum - C/C++ - problema programma random

Avatar
yoghi87 (Normal User)
Rookie


Messaggi: 21
Iscritto: 26/08/2008

Segnala al moderatore
Postato alle 19:02
Giovedì, 06/11/2008
Salve ho scritto questo programma:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main() {
  6.  
  7.         int i;
  8.        
  9.         srand(time(0));
  10.  
  11.         for(i = 0; i < 36; i++)
  12.         printf("%d\n", rand());
  13. return(0);
  14. }



Ma io volevo che mi restiuisce un numero compreso tra 0 e 36 e uno alla volta, invece non fà cosi perchè? Poi gli volevo aggiungere ad ogni numero il colore o rosso o nero... come posso fare . GRAZIE

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 19:41
Giovedì, 06/11/2008
per ottenere un numero casuale compreso tra 0 e un limite basta fare:

Codice sorgente - presumibilmente C/C++

  1. int numero,limite= 36;//36 nel tuo esempio
  2. numero = rand() % limite;
  3. printf("%d\n",numero);


oppure(sconsigliato):
Codice sorgente - presumibilmente C/C++

  1. int numero;
  2. while(numero>36)
  3. {
  4. numero = rand();
  5. }
  6. printf("%d\n",numero);



per cambiare il colore del testo devi usare le API per modificare le impostazioni del prompt dei comandi(DOS o Shell) che trovi in molti altri topic di questo forum.

Ultima modifica effettuata da Overflow il 06/11/2008 alle 19:42
PM Quote
Avatar
yoghi87 (Normal User)
Rookie


Messaggi: 21
Iscritto: 26/08/2008

Segnala al moderatore
Postato alle 21:52
Giovedì, 06/11/2008
no ma io come colore intendevo che veniva stampato un numero random insieme ad una scritta o rosso o nero sempre random...:-?

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 9:15
Venerdì, 07/11/2008
Testo quotato

Postato originariamente da yoghi87:

no ma io come colore intendevo che veniva stampato un numero random insieme ad una scritta o rosso o nero sempre random...:-?



non e' per caso che vuoi implementare una roulette? :)
in una roulette il rosso e il nero non sono indipendenti: dipendono dal numero che è uscito...

PM Quote
Avatar
yoghi87 (Normal User)
Rookie


Messaggi: 21
Iscritto: 26/08/2008

Segnala al moderatore
Postato alle 10:15
Venerdì, 07/11/2008
si in pratica il funzionamento di una roulette, non ci avevo pensato che determinati colari sono neri e altri rossi, quindi non essendo random il colore come implemento l'uscita di un numero con il colore?

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 15:36
Venerdì, 07/11/2008
Testo quotato

Postato originariamente da yoghi87:

si in pratica il funzionamento di una roulette, non ci avevo pensato che determinati colari sono neri e altri rossi, quindi non essendo random il colore come implemento l'uscita di un numero con il colore?



beh... intanto devi sapere quali numeri sono rossi e quali neri, poi ti basta un if:

Codice sorgente - presumibilmente C/C++

  1. if ((numero == '2') || (numero == '4') || ... )
  2.    colore = 'nero'
  3.  else
  4.    colore = 'rosso';



supponendo che 2, 4 , ecc... siano neri

ciao.

PM Quote
Avatar
yoghi87 (Normal User)
Rookie


Messaggi: 21
Iscritto: 26/08/2008

Segnala al moderatore
Postato alle 21:12
Venerdì, 07/11/2008
Grazie per l'aiuto ho risolto cosi:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define NO_COLORE 0
  6. #define NERO 1
  7. #define ROSSO 2
  8.  
  9. int colori[] = {NO_COLORE, ROSSO, NERO, ROSSO, NERO, ROSSO, NERO,
  10.                    ROSSO, NERO, ROSSO, NERO, NERO, ROSSO, NERO, ROSSO, NERO,
  11.                    ROSSO, NERO, ROSSO, ROSSO, NERO, ROSSO, NERO, ROSSO, NERO,
  12.                    ROSSO, NERO, ROSSO, NERO, NERO, ROSSO, NERO, ROSSO, NERO,
  13.                    ROSSO, NERO, ROSSO};
  14.  
  15. int main()
  16. {    
  17.     int num;
  18.     srand(time(NULL));
  19.     num = (rand() % 36) + 1;
  20.     if (colori[num] == NO_COLORE) printf("%d", num);
  21.     else if (colori[num] == NERO) printf("%d Nero\n", num);
  22.     else if (colori[num] == ROSSO) printf("%d Rosso\n", num);
  23.     return 0;
  24. }



Però vorrei che ogni numero il programma non mi uscisse ma continuasse nell'esecuzione in modo che premo nuovamente invio e mi restituisce un nuovo numero, come posso fare?

Ultima modifica effettuata da yoghi87 il 07/11/2008 alle 21:16
PM Quote