Oppure

Loading
06/11/08 18:02
yoghi87
Salve ho scritto questo programma:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {

	int i;
	
	srand(time(0));

	for(i = 0; i < 36; i++)
	printf("%d\n", rand());
return(0);
}


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
aaa
06/11/08 18:41
Overflow
per ottenere un numero casuale compreso tra 0 e un limite basta fare:

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

oppure(sconsigliato):
int numero;
while(numero>36)
{
numero = rand();
}
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 06/11/08 18:42
aaa
06/11/08 20:52
yoghi87
no ma io come colore intendevo che veniva stampato un numero random insieme ad una scritta o rosso o nero sempre random...:-?
aaa
07/11/08 8:15
gioser
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...
aaa
07/11/08 9:15
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?
aaa
07/11/08 14:36
gigisoft
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:

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


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

ciao.
aaa
07/11/08 20:12
yoghi87
Grazie per l'aiuto ho risolto cosi:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define NO_COLORE 0
#define NERO 1
#define ROSSO 2 

int colori[] = {NO_COLORE, ROSSO, NERO, ROSSO, NERO, ROSSO, NERO,
                   ROSSO, NERO, ROSSO, NERO, NERO, ROSSO, NERO, ROSSO, NERO,
                   ROSSO, NERO, ROSSO, ROSSO, NERO, ROSSO, NERO, ROSSO, NERO,
                   ROSSO, NERO, ROSSO, NERO, NERO, ROSSO, NERO, ROSSO, NERO,
                   ROSSO, NERO, ROSSO};

int main() 
{    
    int num;
    srand(time(NULL));
    num = (rand() % 36) + 1;
    if (colori[num] == NO_COLORE) printf("%d", num);
    else if (colori[num] == NERO) printf("%d Nero\n", num);
    else if (colori[num] == ROSSO) printf("%d Rosso\n", num);
    return 0;
}


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 07/11/08 20:16
aaa