it says a referenced memory could not be read anyone help please
#include <iostream.h>
char gridchange(int fplayer, int gridnum);
int GridP();
int Winner();
int gridnum;
char grid[3][4];
int winner;
void main()
{
int fplayer;
do
{
cout << "Who goes first 1 for X or 2 for O";
cin >> fplayer;
}
while(fplayer != 1 && fplayer != 2);
GridP();
do
{
gridchange(fplayer, gridnum);
}
while(winner != 1 || winner != 2);
}
char gridchange(int fplayer, int gridnum)
{
grid[1][4] = '\n';
grid[2][4] = '\n';
grid[3][4] = '\n';
int x, y;
if(fplayer == 1)
{
if(gridnum == 1)
{
if(grid[1][1] == 'X' || grid[1][1] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[1][1] != 'X' || grid[1][1] != 'O')
{
grid[1][1] = 'X';
}
}
else if(gridnum == 2)
{
if(grid[1][2] == 'X' || grid[1][2] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[1][2] != 'X' || grid[1][2] != 'O')
{
grid[1][2] = 'X';
}
}
else if(gridnum == 3)
{
if(grid[1][3] == 'X' || grid[1][3] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[1][3] != 'X' || grid[1][3] != 'O')
{
grid[1][3] = 'X';
}
}
else if(gridnum == 4 )
{
if(grid[2][1] == 'X' || grid[2][1] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[2][1] != 'X' || grid[2][1] != 'O')
{
grid[2][1] = 'X';
}
}
else if(gridnum == 5 )
{
if(grid[2][2] == 'X' || grid[2][2] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[2][2] != 'X' || grid[2][2] != 'O')
{
grid[2][2] = 'X';
}
}
else if(gridnum == 6 )
{
if(grid[2][3] == 'X' || grid[2][3] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[2][3] != 'X' || grid[2][3] != 'O')
{
grid[2][3] = 'X';
}
}
else if(gridnum == 7 )
{
if(grid[3][1] == 'X' || grid[3][1] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[3][1] != 'X' || grid[3][1] != 'O')
{
grid[3][1] = 'X';
}
}
else if(gridnum == 8 )
{
if(grid[3][2] == 'X' || grid[3][2] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[3][2] != 'X' || grid[3][2] != 'O')
{
grid[3][2] = 'X';
}
}
else if(gridnum == 9 )
{
if(grid[3][3] == 'X' || grid[3][3] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[3][3] != 'X' || grid[3][3] != 'O')
{
grid[3][3] = 'X';
}
}
}
if(fplayer == 2)
{
if(gridnum == 1)
{
if(grid[1][1] == 'X' || grid[1][1] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[1][1] != 'X' || grid[1][1] != 'O')
{
grid[1][1] = 'O';
}
}
else if(gridnum == 2)
{
if(grid[1][2] == 'X' || grid[1][2] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[1][2] != 'X' || grid[1][2] != 'O')
{
grid[1][2] = 'O';
}
}
else if(gridnum == 3)
{
if(grid[1][3] == 'X' || grid[1][3] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[1][3] != 'X' || grid[1][3] != 'O')
{
grid[1][3] = 'O';
}
}
else if(gridnum == 4 )
{
if(grid[2][1] == 'X' || grid[2][1] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[2][1] != 'X' || grid[2][1] != 'O')
{
grid[2][1] = 'O';
}
}
else if(gridnum == 5 )
{
if(grid[2][2] == 'X' || grid[2][2] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[2][2] != 'X' || grid[2][2] != 'O')
{
grid[2][2] = 'O';
}
}
else if(gridnum == 6 )
{
if(grid[2][3] == 'X' || grid[2][3] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[2][3] != 'X' || grid[2][3] != 'O')
{
grid[2][3] = 'O';
}
}
else if(gridnum == 7 )
{
if(grid[3][1] == 'X' || grid[3][1] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[3][1] != 'X' || grid[3][1] != 'O')
{
grid[3][1] = 'O';
}
}
else if(gridnum == 8 )
{
if(grid[3][2] == 'X' || grid[3][2] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[3][2] != 'X' || grid[3][2] != 'O')
{
grid[3][2] = 'O';
}
}
else if(gridnum == 9 )
{
if(grid[3][3] == 'X' || grid[3][3] == 'O')
{
cout << "Space Filled Try Again";
GridP();
}
else if(grid[3][3] != 'X' || grid[3][3] != 'O')
{
grid[3][3] = 'O';
}
}
Winner();
}
for(x = 1; x < 5; x++)
{
for(y = 1; y < 5; y++)
{
cout << grid[x][y];
}
}
return 0;
}
int GridP()
{
do
{
cout << " | | \n 1 | 2 | 3 \n___|___|___\n | | \n 4 | 5 | 6 \n___|___|___\n | | \n 7 | 8 | 9 \n | | \n";
cout << "What grid number would you like to enter?";
cin >> gridnum;
}
while(gridnum <= 1 && gridnum >= 9);
return gridnum;
}
int Winner()
{
if((grid[1][3] == 'X' && grid[1][2] == 'X' && grid[1][1] == 'X') || (grid[2][1] == 'X' && grid[2][2] == 'X' && grid[2][3] == 'X') ||
(grid[3][1] == 'X' && grid[3][2] == 'X' && grid[3][3] == 'X') || (grid[1][1] == 'X' && grid[2][1] == 'X' && grid[3][1] == 'X') || (grid[1][2] == 'X' && grid[2][2] == 'X' && grid[3][2] == 'X') || (grid[1][3] == 'X' && grid[2][2] == 'X' && grid[3][3] == 'X') || (grid[1][1] == 'X' && grid[2][1] == 'X' && grid[3][1] == 'X') || (grid[1][3] == 'X' && grid[2][1] == 'X' && grid[3][3] == 'X'))
{
int winner = 1;
}
else if((grid[1][3] == 'O' && grid[1][2] == 'O' && grid[1][1] == 'O') || (grid[2][1] == 'O' && grid[2][2] == 'O' && grid[2][3] == 'Y') || (grid[3][1] == 'O' &&
grid[3][2] == 'O' && grid[3][3] == 'O') || (grid[1][1] == 'O' && grid[2][1] == 'O' && grid[3][1] == 'O') || (grid[1][2] == 'O' && grid[2][2] == 'O' && grid[3][2] == 'O') || (grid[1][3] == 'O' && grid[2][2] == 'O' && grid[3][3] == 'O') || (grid[1][1] == 'O' && grid[2][1] == 'O' && grid[3][1] == 'O') || (grid[1][3] == 'Y' && grid[2][1] == 'O' && grid[3][3] == 'O'))
{
winner = 2;
}
else
{
winner = 0;
}
return 0;
}
Thanks everybody