PDA

Visualizza la versione completa : (C++) random e while


ildarione
29-11-2011, 19:20
salve a tutti...
ho il seguente problema...sto facendo un programmino in c++ il quale alla fine dovrebbe stamparmi un tot di numeri casuali i quali siano compresi tra 0 e 7 e che il programma si fermi quando la somma dei numeri casuali generata uguale ad un numero trovato con una funzione precedente...

ora ho provato a fare una procedure inserendo la srand in un while ma non funziona e mi fa in ciclio infinito...

potete aiutarmi??grazie a tutti in anticipo!!!

oregon
29-11-2011, 21:41
Perch non proponi il tuo codice e ce lo spieghi?

ildarione
29-11-2011, 23:51
si avete ragione...
pi tardi o domani lo copio subito qui sul forum!!!

ildarione
30-11-2011, 10:02
eccomi...allora...

le librerie che uso sono queste..

#include<time.h>
#include<stdio.h>
#include<stdlib.h>

e il pezzo in questione questo:

srand(time(0));
while(k=f){
i=rand()%7;
cout<<i;
cout<<endl;
k=k+i;}

dove f il numero trovato precedentemente...praticamente devo trovare numeri casuali da 0 a 7 i quali sommati tra di loro mi danno f..una volta successo il programma termina...

giusto o ho sparato una boiata io??

oregon
30-11-2011, 10:37
k=f una assegnazione e non un confronto

k deve partire da 0, ma non stato azzerato

essendo casuali non sempre possibile che la somma sia uguale a k, potrebbe essere superiore

ildarione
30-11-2011, 10:51
k l'ho inizializzato a 0...
quindi tu dici che potrei farlo con un if??
altrimenti che soluzione proponi??

oregon
30-11-2011, 10:57
La soluzione dovresti indicarcela tu ... Che ne pensi di quello che ti ho scritto (riguardo al fatto che possibile che k superi f? Dovresti cambiare il confronto con k<f ...

ildarione
30-11-2011, 10:59
io avevo pensato al <= visto che dovrei ottenere il numero esatto...

ildarione
30-11-2011, 11:06
mettendo k<f o k<=f quasi giusto...solo che la somma dei numeri casuali supera di 1 il numero che dovrei trovare....

oregon
30-11-2011, 17:52
Te l'avevo detto prima ... essendo CASUALI nessuno ti assicura che troverai esattamente il valore f.

Se vuoi effettivamente ottenere quel valore, devi introdurre un controllo all'interno del ciclo che serva ad escludere il valore random ottenuto se questo fa superare (con la somma in k) il valore di f. Ovviamente potrebbe volerci pi tempo per trovare il valore giusto.

In questo caso potrai utilizzare un ciclo infinito da cui uscire solo per k==f

Loading