# Help With Functions and Random Numbers

• 03-10-2009
CaliJoe
Help With Functions and Random Numbers
Hi, i was working on this for my class and i can't seem to get this to work. I am not quite done yet but i have a few problems. After my rules and game function, i would like it to return to the home screen (call the main) again but it dosen't seem to do that. When i click 1 for the rules it displays the rules then plays the game instead of returing home. Then i the random number dice are not number between 1 to 6. Why ? Thanks

Code:

```#include <iostream> #include <cstdlib> #include <time.h> using namespace std; int Dice (int dice1, int dice2) { time_t seconds; time(&seconds); srand((unsigned int) seconds); dice1 = rand() % (5 + 1)+1; dice2 = rand() % (5 + 1)+1; return (dice1, dice2); } int rules() {     system("cls"); cout << " The Rules Are Quite Simple. We Roll Two Dice.\n -If Even, Player 1 Gets a Point\n If Odd, Player 2 Gets a Point\n"; system("Pause"); int main (); } int game() {     int times;     system("cls");     cout << "How Many Times Would You Like to Roll?";     cin >> times;     int Dice (int dice1, int dice2);     int main (); } int main() {     int key; cout << "Menu\n Press 1 for Rules\n Press Any Key to Play\n"  ; cin >> key; if (key==1)   {rules();}   else   {game();} int dice1; int dice2 ;  cout << "First Dice = " << dice1 <<  endl; cout << "Second Dice = " << dice2 << endl; system("pause"); }```
• 03-10-2009
Sparrowhawk
Quote:

Originally Posted by CaliJoe
Hi, i was working on this for my class and i can't seem to get this to work. I am not quite done yet but i have a few problems. After my rules and game function, i would like it to return to the home screen (call the main) again but it dosen't seem to do that. When i click 1 for the rules it displays the rules then plays the game instead of returing home. Then i the random number dice are not number between 1 to 6. Why ? Thanks

Code:

```#include <iostream> #include <cstdlib> #include <time.h> using namespace std; int Dice (int dice1, int dice2) { time_t seconds; time(&seconds); srand((unsigned int) seconds); dice1 = rand() % (5 + 1)+1; dice2 = rand() % (5 + 1)+1; return (dice1, dice2); } int rules() {     system("cls"); cout << " The Rules Are Quite Simple. We Roll Two Dice.\n -If Even, Player 1 Gets a Point\n If Odd, Player 2 Gets a Point\n"; system("Pause"); int main (); } int game() {     int times;     system("cls");     cout << "How Many Times Would You Like to Roll?";     cin >> times;     int Dice (int dice1, int dice2);     int main (); } int main() {     int key; cout << "Menu\n Press 1 for Rules\n Press Any Key to Play\n"  ; cin >> key; if (key==1)   {rules();}   else   {game();} int dice1; int dice2 ;  cout << "First Dice = " << dice1 <<  endl; cout << "Second Dice = " << dice2 << endl; system("pause"); }```

A few things are wrong with this... I've never heard of "calling main" if it some how has been returning to main I believe it is a bug. What you should do is loop. Looping is very easy and very common. Also, declare all of your variables at the start of the function. So put dice1/dice2 right after key... Once you move out of main you can't touch dice1/dice2 unless you've passed them to a function by calling it IN main... and your call to your function Dice in the game() function tries to use those variables but it isn't called from main it is called from game() where the variables dice 1 and dice 2 do not exist. What you want to do is pass 2 ints that you create in the game() function to the Dice function.

As for looping... a do/while loop should be sufficient. If you don't understand most of what I said you may want to read your book over again... or look up information on looping and variable scope.