Stuck in an infinite loop

closed account (1hv7ko23)
My partner and I are making the game of Chutes and ladders. But our program will not get into the for statement it just keeps printing "?".

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include<iostream>
#include<string>						
#include<ctime>
using namespace std;

void Spin(int&,int);          			        	

void Spin(int& spinner,int i) 	                		
{								
  srand(time(NULL));								
  spinner=rand()%6+1;						
}


int main()
{
   int space[4];						
   int number;							
   int i=0;							
   int spinner;							
   int win;							
   string answer;						
   cout<<"Enter how many players you want."<<endl;
   cin>>number;							
   for (i=0;i<=number+1;i++)
   {
      space[i]=0;
      i++;
   }

   cout<<"Everone starts on space 0."<<endl;

   win=1;

   while(win==1)
   {
      cout<<"?"<<endl;                                         // PRINTS "?" INFINITELY 
   
      for (i=1;i<=number;i++)
      {
        if (space[0]<100&&space[1]<100&&space[2]<100&&space[3]<100&&space[4]<100)
        {
          cout<<"Player "<<i<<" type something in to continue."<<endl;
          cin>>answer;
 


           Spin(spinner,i);


          space[i]=space[i]+spinner;
          if (space[i]>=100)
          {
             space[i]=100;
          }
          cout<<"Player "<<i<<" spun a "<<spinner<<". "<<endl;
          cout<<"You are now on space "<<space[i]<<"."<<endl;
          if (space[i]==4)
          {
              cout<<"You donated blood. You advance to space 14."<<endl;
              space[i]=14;
          }
          if (space[i]==9)
          {  
              cout<<"You won the pie-eating contest. You advance to space 31."<<endl;
              space[i]=31;
          } 
          if (space[i]==16)
          {  
              cout<<"You knocked a bookcase over. You go back to space 6."<<endl;
              space[i]=6;
          } 
          if (space[i]==21)
          {  
              cout<<"You won the pet show. You advance to space 42."<<endl;
              space[i]=42;
          } 
          if (space[i]==28)
          {  
              cout<<"You won the lottery! You advance to space 84."<<endl;
              space[i]=84;
           } 
          if (space[i]==36)
          {  
              cout<<"You baked a cake for your mother. You advance to space 44."<<endl;
              space[i]=44;
          } 
          if (space[i]==47)
          {  
              cout<<"You lost your favorite book. You go back to space 26."<<endl;
              space[i]=26;
          } 
          if (space[i]==49)
          {  
              cout<<"You forgot your mother's birthday. You go back to space 11."<<endl;
              space[i]=11;
          }
          if (space[i]==51)
          {
              cout<<"You helped a cat get out of a tree. You advance to space 67."<<endl;
              space[i]=67;
          }
          if (space[i]==56)
          {
              cout<<"You didn't feed your pet. You go back to space 53."<<endl;
              space[i]=53;
          }
          if (space[i]==62)
          {
              cout<<"You failed a big test. You go back to space 19."<<endl;
              space[i]=19;
          }
          if (space[i]==64)
          {
              cout<<"You lost your pet. You go back to space 60."<<endl;
              space[i]=60;
          }
          if (space[i]==71)
          {
              cout<<"You got an 'A' on a big test. You advance to space 91."<<endl;
              space[i]=91;
          }
          if (space[i]==80)
          {
              cout<<"You have discovered a cure for cancer. You advance to space 100, YOU WIN!"<<endl;
              space[i]=100;
          }
          if (space[i]==87)
          {
              cout<<"You crashed your parents' car. You go back to space 24."<<endl;
              space[i]=24;
          }
          if (space[i]==93)
          {
              cout<<"You broke the TV. You go back to space 73."<<endl;
              space[i]=73;
          }
          if (space[i]==95)
          {
              cout<<"You spilled the paint on the floor. You go back to space 75."<<endl;
              space[i]=75;
          }
          if (space[i]==98)
          {
              cout<<"You caught the flu. You go back to space 78."<<endl;
              space[i]=79;
           }
          if (space[i]>=100)
          {
              cout<<"Player "<<i<<" YOU WIN!"<<endl;
              win=2; 
          }
        }
       }
     }
   return 0;
   }


Any Help will be greatly appreciated.
Last edited on
use [ code][/code] for codes.
space is an array with 4 possible indexes ranging from 0 to 3.

In line 24 you make no effort to assure number is within that range.
In lines 25 and 39 you use number to determine index values into space.
In line 41 you access space[4] which results in undefined behavior.

You probably want to move line 10 into main. Seeding the random number generator is something you generally only need to do once per run.

The problem you asked about, though is line 25. When the program begins you set some arbitrary number of values in space to 0. In line 25, the if expression never evaluates to true unless every member of space is > 100.
Last edited on
closed account (1hv7ko23)
thanks for all the help
btw, srand is just use one time though...
Topic archived. No new replies allowed.