Can you help me to find my errors?

I was tasked with making a tictactoe game that takes a string of inputs and then generates the board and the state of the game. B's are blanks and then the regular X and O. I used a two dimensional array to create the program and it executes fine and generates the board perfectly but for some reason it only recognizes the "if statement" to announce a winner if the winner has three X's in the top row.

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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
// ------------------------------------------------------------------
// File name:   tictactoeA.cpp
// Assign ID:   PROG1a
// Due Date:    01/14/13 at 11pm
//
// Purpose:     Write a C++ program to display a 2-dimensional tic-tac-toe 
//              board that shows the moves players have made so far.
//              The program must also announce the state of the game.
//
// Author:      bfields Byron Fields
//
// ------------------------------------------------------------------

#include <iostream>
using namespace std;

int main()
{
   // ----------------------------------------------------------------------
   //  Declare variables
   // ----------------------------------------------------------------------
   char board[3][3];
   int bcount = 0;

   //-| ----------------------------------------------------------------------
   //-| Print the copyright notice declaring authorship.
   //-| ----------------------------------------------------------------------
   cout << endl << "(c) 2013, bfields Byron Fields" << endl << endl;


   //-| ----------------------------------------------------------------------
   //-| 1. Read the board
   //-| ----------------------------------------------------------------------
   cout << "Enter moves made on board ie. (BBBBBBBBB) " << endl;
   cin >> board[0][0];
   cin >> board[1][0];
   cin >> board[2][0];
   cin >> board[0][1];
   cin >> board[1][1];
   cin >> board[2][1];
   cin >> board[0][2];
   cin >> board[1][2];
   cin >> board[2][2];

if (board[0][0] == 'B')
{
board[0][0] = ' ';
bcount += 1;
}
if (board[1][0] == 'B')
{
board[1][0] = ' ';
bcount += 1;
}
if (board[2][0] == 'B')
{
board[2][0] = ' ';
bcount += 1;
}
if (board[0][1] == 'B')
{
board[0][1] = ' ';
bcount += 1;
}
if (board[1][1] == 'B')
{
board[1][1] = ' ';
bcount += 1;
}
if (board[2][1] == 'B')
{
board[2][1] = ' ';
bcount += 1;
}
if (board[0][2] == 'B')
{
board[0][2] = ' ';
bcount += 1;
}
if (board[1][2] == 'B')
{
board[1][2] = ' ';
bcount += 1;
}
if (board[2][2] == 'B')
{
board[2][2] = ' ';
bcount += 1;
}  


   //-| ----------------------------------------------------------------------
   //-| 2. Determine Winner
   //-| ----------------------------------------------------------------------
if(bcount == 9)   // If 9 B's entered then board is blank
{
cout << "GAME STATUS: NEW GAME" << endl;
}
  else if (board[0][0] == 'X') // checks for 3 X's on top row
{
   if (board[0][1] == 'X')
   if (board[0][2] == 'X')
cout << "GAME STATUS: WINNER IS X" << endl;
}

   else if (board[0][0] == 'O') // checks for 3 O's on top row
{
   if (board[0][1] == 'O') 
   if (board[0][2] == 'O')
cout << "GAME STATUS: WINNER IS O" << endl;
}  
   else if (board[1][0] == 'X') // checks for 3 X's on middle row
{
   if (board[1][1] == 'X') 
   if (board[1][2] == 'X')
cout << "GAME STATUS: WINNER IS X" << endl;
}   
   else if (board[1][0] == 'O')  // checks for 3 O's on middle row
{
   if (board[1][1] == 'O') 
   if (board[1][2] == 'O')
cout << "GAME STATUS: WINNER IS O" << endl;
}   
   else if (board[2][0] == 'X') // checks for 3 X's on bottom row
{
   if (board[2][1] == 'X') 
   if (board[2][2] == 'X')
cout << "GAME STATUS: WINNER IS X" << endl;
}   
   else if (board[2][0] == 'O')  // checks for 3 O's on bottom row
{
   if (board[2][1] == 'O') 
   if (board[2][2] == 'O')
cout << "GAME STATUS: WINNER IS O" << endl;
}  
// ---------------------------------------------------------
else if (board[0][0] == 'X') // checks for 3 X's horizontally down first row
{
   if (board[1][0] == 'X') 
   if (board[2][0] == 'X')
cout << "GAME STATUS: WINNER IS X" << endl;
}   
   else if (board[0][1] == 'O') // checks for 3 O's horizontally down first row
{
   if (board[1][1] == 'O') 
   if (board[2][2] == 'O')
cout << "GAME STATUS: WINNER IS O" << endl;
}  
   else if (board[2][0] == 'X') // checks for 3 X's horizontally down middle row
{
   if (board[2][1] == 'X') 
   if (board[2][2] == 'X')
cout << "GAME STATUS: WINNER IS X" << endl;
}   
   else if (board[0][0] == 'O') // checks for 3 )'s horizontally down middle row
{
   if (board[1][0] == 'O') 
   if (board[2][0] == 'O')
cout << "GAME STATUS: WINNER IS O" << endl;
}   
   else if (board[0][1] == 'O') // checks for 3 X's horizontally down last row
{
   if (board[1][1] == 'O') 
   if (board[2][2] == 'O')
cout << "GAME STATUS: WINNER IS O" << endl;
}  
   else if (board[2][0] == 'O') // checks for 3 O's horizontally down last row
{
   if (board[2][1] == 'O') 
   if (board[2][2] == 'O')
cout << "GAME STATUS: WINNER IS O" << endl;
} 
// ----------------------------------------------------------------
//  checks diagonally both ways for winner 
//-----------------------------------------------------------------
else if (board[0][0] == 'X')
{
   if (board[1][1] == 'X') 
   if (board[2][2] == 'X')
cout << "GAME STATUS: WINNER IS X" << endl;
}  
   else if (board[2][0] == 'X')
{
   if (board[1][1] == 'X') 
   if (board[2][2] == 'X')
cout << "GAME STATUS: WINNER IS X" << endl;
} 
   else if (board[0][0] == 'O')
{
   if (board[1][1] == 'O') 
   if (board[2][2] == 'O')
cout << "GAME STATUS: WINNER IS O" << endl;
}  
   else if (board[2][0] == 'O')
{
   if (board[1][1] == 'O') 
   if (board[2][2] == 'O')
cout << "GAME STATUS: WINNER IS O" << endl;
} 

else
{cout << "Game Is A Draw!" << endl;
}

cout << "GAME BOARD: " << endl;
cout << endl;
   
   //-| ----------------------------------------------------------------------
   //-| 3. Print out board w/ results
   //-| ----------------------------------------------------------------------
     cout << "---+---+---" << endl;
     cout << " " << board[0][0] << " | " << board[1][0] << " | " << board[2][0] << " " << endl;
     cout << "---+---+---" << endl; 
     cout << " " << board[0][1] << " | " << board[1][1] << " | " << board[2][1] << " " << endl;  
     cout << "---+---+---" << endl;
     cout << " " << board[0][2] << " | " << board[1][2] << " | " << board[2][2] << " " << endl; 
     cout << "---+---+---" << endl;  
   
   //-| ----------------------------------------------------------------------
   //-| Print the copyright notice declaring authorship again.
   //-| ----------------------------------------------------------------------
   cout << endl << "(c) 2013, bfields Byron Fields" << endl << endl;

   
   return 0;
   
}//main 
The way you have your if-statements arranged, if the top left corner is an "X," no other if statement will run. For-loops would be the way to go here, but if you insist on using if-statements, consider using the "&&" operator rather than nested ifs.
Last edited on
thanks man. the "&&" worked perfectly
Topic archived. No new replies allowed.