PDA

Visualizza la versione completa : [C++] Somma del lancio di due dadi


marcos666
28-01-2011, 14:20
Salve ho implementato questo codice che lancia 2 dadi e si ottegono 2 risultati che vengono visualizzatti da video, ma non so come posso fare per sommare questi due risultari e visulaizzare la somma. L'altro problema che ho è che quando si lanciano i dadi sempre vengono due numeri uguali, es: 2 2, 4 4, 6 6 e cosi via, vorrei sapere come fare a dare ad ogni dado un valore diverso.
grazie, in attessa di risposta
Marcos








# include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;

int lanciadadi ( );


int main ()
{
int risultato1=lanciadadi();
int risultato2=lanciadadi();




system ("pause");
return 0;

}

int lanciadadi ()
{
int somma;
srand (time(0));//inizializza il generatore
int risultato=rand ()%6+1;//genera un numero casuale fra 0 e 5
cout<<risultato<<' ';

}

YuYevon
28-01-2011, 14:40
Originariamente inviato da marcos666
Salve ho implementato questo codice che lancia 2 dadi e si ottegono 2 risultati che vengono visualizzatti da video, ma non so come posso fare per sommare questi due risultari e visulaizzare la somma.

Scusa qual è il problema? Si tratta di fare una somma tra due variabili e stamparla...


Originariamente inviato da marcos666
L'altro problema che ho è che quando si lanciano i dadi sempre vengono due numeri uguali, es: 2 2, 4 4, 6 6 e cosi via, vorrei sapere come fare a dare ad ogni dado un valore diverso.


Il problema è che inizializzi il generatore pseudocasuale ad ogni chiamata della funzione lanciadadi() utilizzando la funzione time(): questa restituirà quasi sempre lo stesso valore in quanto le due chiamate a funzione avvengono in un intervallo di tempo troppo piccolo perché questo valore possa essere diverso, con la conseguenza che il generatore viene inizializzato due volte con lo stesso valore e quindi i numeri generati risultano uguali. Inizializzalo una sola volta richiamando srand() all'interno di main() prima delle due chiamate a lanciadadi().

marcos666
28-01-2011, 14:46
si, si tratta di prendere quei due valori che si sono creati casualmente, sommarli ed immagazzinarli in una variabile per poi poterla stampare.
grazie per la precisione della risposta di perche si creano due numeri uguali.

XAlbeX
28-01-2011, 16:38
stai attento che nella funzione lanciadadi non ritorna nessun valore..
perciò le variabili risultato1 e risultato2 nella main avranno valori sbagliati

Beavey
28-01-2011, 17:11
Ciao,
qualche tempo fa avevo creato un piccolo snippet di codice per calcolare la somma di due dadi generati in modo piu o meno casuale:



#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main() {

srand(time(NULL));
int d1, d2, somma;

for (int i = 0; i < 10; i++) {
d1 = rand()%6+1;
d2 = rand()%6+1;

somma = d1 + d2;

cout << "Dado 1: " << d1 << "\t Dado 2: " << d2 << "\t Somma Dadi: " << somma << endl;
}
}

Loading