I started working my way through "C All-In-One Desk Reference For Dummies" by Dan Gookin. I've made it to page 240 and got stuck on a do...while statement. The program generates 6 lotto numbers and disregards any duplicates. The snip-it of code I'm stuck on is:
This segment of the code is apparently checking to make sure the random number generated hasn't already been added to the array but I cannot figure out what calculation/check while(numbers[ball]) is performing to spin the loop. There is no operator present. Any help would be appreciated.Code:do { ball = random() % RANGE; } while(numbers[ball];
Here is the full code:
Code:#include <stdio.h> #include <stdlib.h> #include <time.h> #define RANGE 50 #define BALLS 6 int main() { int numbers[RANGE]; // 0 to 49 int c,ball; puts("L O T T O P I C K E R\n"); srandom((unsigned)time(NULL)); /* initialize the array */ for(c=0;c<RANGE;c++) // if c < 50 numbers[c]=0; printf("Press Enter to pick this week's numbers:"); getchar(); /* draw the numbers */ puts("Here they come:"); for(c=0;c<BALLS;c++) { /* see if a number has already been drawn */ do { ball = random() % RANGE; } while(numbers[ball]); /* Number drawn */ numbers[ball] = 1; printf(" %i ",ball+1); } printf("\n\nGood luck in the drawing!\n"); return(0); }