# Array problem

• 05-03-2008
nashsclay
Array problem
Hi, this is my first time posting here. So I'm working on this project for my final that is due in a few days for my C programming class. I have just one thing left. My program is a snack machine. The problem exists when the user puts in how much of something they want. Let's say I have 6 dollars and I want a quanity of 7 of an item (each item if 1 dollar) it says please reenter your choice but goes to the next item. I want it to reask for the same item. Sorry if I am doing something wrong. This is my source code.
Code:

```/*   Term Project I   CSC 218, S1   Spring, 2008   Dr. Manki Min   Nathan Nash   1750669 */ #include <stdio.h>  //header file #include <stdbool.h> //header file #include <stdlib.h>  //header file #include <math.h>    //header file int money, choice1; // declaration of variables bool a = false; //bool statement char candy[8][11] = {"snickers","mars", "hershey", "chips", "crackers", "cookies", "skittles", "gummybears"}; //snacks int snacks[8]; // defined array for how many wanted bool b = false; //bool statement int main (void) //main program {  // opening of snack machine   system ( "clear" );  //clears screen   printf("\n\t\t\tWelcome to Nate's Tummy Yummies!\n\n"); //Title of snack machine  while (a == false) //loop statement  {   printf("\nPlease enter the amount of money you have in dollars.  Ex: 35 dollars = 35. "); //Statement about money   scanf("%d", &money); //Enter the ammount of money you have       printf("\nYou have entered \$%d, is this correct? Type '1' for yes, '2' to return, or '4' to exit.  ", money);  //Asks user if ammount entered was correct.     scanf("%d", &choice1); //Let's user confirm ammount or have a chance to go back     if (choice1 == 1) // choices     {     printf("\nYou have \$%d.\n", money); //States how much money the user has left     printf("You will get to choose from snickers, mars, hershey, chips, crackers, cookies, skittles, and gummybears.\n\n"); //shows choices     printf("Each item costs \$1\n"); //display cost of each item     a = true;  //continues on with program     }   else if (choice1 == 2) //no choice     {     a = false; //goes back to enter money     }   else if (choice1 == 4) //choice to quit   {     return 0; //terminates program   }   else //else statement   {     printf("\nInvalid choice.  Please try again.\n"); //invalid choice     a = false; //invalid entry returns to choice   }   }     int row; //define row   int col; //define col   int x;  //define x   FILE* spOut; //used for opening file   spOut = fopen("receipt.dat", "w"); //opens receipt.dat   for (row = 0; row < 8; row++) //for statement with how many like of candy   {         if (money >= 0) //if money is greater than or equal to 0         {           printf("\nHow many of the %s would you like? ", candy[row]); //asks for how many snacks           scanf("%d", &snacks[row]); //stores users input for snacks                       if (snacks[row] > money)           {             printf("\nYou don't have enough money please re-enter the amount you want.");           }           if (snacks[row] <= money)           {           fprintf(spOut, "\n%d %s ", snacks[row], candy[row]); //prints output to outside file           money = money - snacks[row]; //subtracts money           printf("\nYou have \$%d remaining. ", money); //money remaining           }           }   }   for(row = 0; row < 8; row++) //for statement for how many wanted   {       printf("\nYou wanted %d", snacks[row]); //tell how many snacks wanted       printf(" %s.", candy[row]); //name of candy   }     printf("\n\nYour receipt is printed on the file receipt.dat\n");  //tells user that file will be made   printf("\nThank you for choosing Nate's Tummy Yummies!\n"); //closing statement   fprintf(spOut, "\nThank you!"); //prints thanks you to outside file   return 0; //End program }```
• 05-03-2008
vart
you have only 1 function - why so many global vars?
Quote:

I want it to reask for the same item
use same loop idea you have with money asking question
• 05-03-2008
nashsclay
This is my first C class. You mean just do another while type statement?
• 05-03-2008
vart
Quote:

You mean just do another while type statement?
yes... if you want to repeate several statements - wrap them inside some loop

while seems to be a good choice here... but do{}while maybe even better - because you always want to execute the body at least once - and this is exactly what do..while does
• 05-03-2008
nashsclay
Could someone type up what it should look like? I am having trouble at this.