Problem with while loops in C

  • Thread starter chasely
  • Start date
  • #1
2
0

Homework Statement



Write a program that will roll a pair of six-sided dice (int variables named redDie and blueDie) and will give you 5 points every time you roll doubles (pair of 2s, 3s, 4s, and 5s) and 10 points if you roll snake-eyes (pair of 1s) or boxcars (pair of 6s). Run your program 10 times and see how many points you make. NOTE: This lab presents an interesting coding problem and emphasizes that gambling is for people who can’t do the math!!

Homework Equations



This was given to us for help at the beginning of the equation

1. Paste the code below this function above your main() function and use it to generate random numbers. The syntax to obtain a random number in main will be :

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

int main(void)
{
int redDie, blueDie;

srand((int)time(NULL) + 1);

redDie = (rand() % 6) + 1 /* produce a random number 1 to 6 */
blueDie = (rand() % 6) + 1 /* what is the % used for? */


}

2. You will need to use the conditional “if-else” statement (Ref: Page 158 of textbook)
Some thing like the following:

if ((redDie == 1) and (redDie == blueDie))
{
/* snake eyes */
}

And so on.......

The Attempt at a Solution



Here's what I got. The program runs just fine without the when loop, but with the loop in place, it takes the output of the first roll and copies that output 10 times, instead of executing a new roll at the beginning of each loop.

Any help that you could give me would be really helpful.

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

int main ()

{

int redDie;
int blueDie;
int dierolls;

dierolls = 0;
while (dierolls < 10)
{
srand((int)time(NULL)+1);

redDie = (rand()%6) + 1, /*produce a random number 1 to 6*/
blueDie = (rand()%6) + 1; /*what is the %used for?*/

if(redDie == 1 && redDie == blueDie)
{
printf("You rolled snake eyes, and scored 10 points!\n");/*snake eyes*/
}
else if(redDie == 6 && redDie == blueDie)
{
printf("You rolled a boxcar, and scored 10 points!\n"); /*boxcars*/
}
else if(redDie == 2 && redDie == blueDie)
{
printf("You rolled double 2's, and scored 5 points!\n");
}
else if(redDie == 3 && redDie == blueDie)
{
printf("You rolled double 3's, and scored 5 points!\n");
}
else if(redDie == 4 && redDie == blueDie)
{
printf("You rolled double 4's, scored 5 points!\n");
}
else if(redDie == 5 && redDie == blueDie)
{
printf("You rolled double 5's, and scored 5 points!\n");
}
else if (redDie != blueDie)
{
printf("You didn't roll any doubles, no points for you. Sorry...\n");
}
dierolls = dierolls + 1;

}
printf("Do yourself a favor, play a different game.");
return 0;
}
 

Answers and Replies

  • #2
918
16
the %6 part means "remainder after division by 6". For instance, "9 % 5" is 4 since 4 is the remainder when you divide 9 by 5.

I have no more answers for you, but I do have a question of my own. Why is it that you have capitalized the second word in redDie and blueDie, but not in dierolls? Do you think it is a good use of your scarcest resource to spend it on deciding case by case what standard to apply when naming things?
 
  • #3
2
0
the %6 part means "remainder after division by 6". For instance, "9 % 5" is 4 since 4 is the remainder when you divide 9 by 5.

I have no more answers for you, but I do have a question of my own. Why is it that you have capitalized the second word in redDie and blueDie, but not in dierolls? Do you think it is a good use of your scarcest resource to spend it on deciding case by case what standard to apply when naming things?
I have no idea why they are capitalized...they were the variables given by the department. Maybe it would make it better for grading purposes? Thanks for your answer to the first part!
 

Related Threads on Problem with while loops in C

  • Last Post
Replies
5
Views
5K
  • Last Post
Replies
7
Views
1K
Replies
4
Views
838
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
2
Views
636
  • Last Post
Replies
1
Views
2K
Replies
0
Views
679
Replies
1
Views
1K
  • Last Post
Replies
15
Views
5K
Replies
5
Views
4K
Top