/*I have to write code for the Game of Life. I wrote nearly all the code for it but for some reason when I run my second generation it just displays the same one as before. Here is my code any idea on why this is happening would be greatly appreciated!

/*

The game of life is really not a game. Is is a computer simulation that was created by a Cambridge Mathematician named John Conway.

The idea is that during each iteration life will populate, survive, or die based on certain rules.

The Rules:

For a space that is populated:

· Each cell with one or no neighbors dies from loneliness

· Each cell with four or more neighbors dies from overpopulation

· Each cell with two or three neighbors survives.

*/

#include <iostream>

#include <iomanip>

#include <cstdlib>

using namespace std;

const int n=5;

int checkx(const char life_array[][n+2],int row,int col);

//function to determine how many neighbors

int main()

{

int row;

int col;

int x;

cout << "Please enter how many times you wish to play the game of life!" << endl;

cin >> x;

char life_array[n+2][n+2]; //original array

char new_array[n+2][n+2]; //array for next generation

int num_neighbors=0; //Neighbors of each square in generation

for(row=1;row<n+2;row++)

for(col=1;col<n+2;col++)

{

int random_integer=(rand()%2);

if((random_integer)==0)

life_array[row][col]=' ';

else

life_array[row][col]='0';

}

for(int num_gen=0;num_gen<x;num_gen++) //generation loop

{

cout<<setw(10)<<"Generation:"<<num_gen+1<<endl<<endl; //Header

for(row=1;row<n+1;row++) //Print Generation

{

cout<<endl;

for(col=1;col<n+1;col++)

{

cout<<life_array[row][col]<<" ";

}

}

for(row=1;row<n+2;row++) //Loop to determine nieghbors

{

cout<<endl;

for(col=1;col<n+1;col++)

{

if ((life_array[row][col])=='0') //If box has an X

{

num_neighbors=checkx(life_array, row, col);

if (num_neighbors != 3 || num_neighbors !=4 ) //Conditions to determine if X lives or dies

new_array[row][col]=' ';

else

new_array[row][col]='0';

}

else //If no 'X' in box

{

num_neighbors=checkx(life_array, row,col);

if(num_neighbors != 2 || num_neighbors !=3) //Condition to determine if X is born

new_array[row][col]=' ';

else

new_array[row][col]='0';

}

}

}

for(row=1;row<n+1;row++) //Copies new array to original array

for(col=1;col<n+2;col++)

new_array[row][col]=life_array[row][col];

}

return 0;

}

int checkx(const char life_array[][n+2],int row,int col)

//function to determine number of neighbors

{

int num_neighbors;

num_neighbors=0;

if ((life_array[row-1][col-1])=='0')

num_neighbors++;

if ((life_array[row][col-1])=='0')

num_neighbors++;

if ((life_array[row][col+1])=='0')

num_neighbors++;

if ((life_array[row-1][col])=='0')

num_neighbors++;

if ((life_array[row+1][col-1])=='0')

num_neighbors++;

if ((life_array[row+1][col])=='0')

num_neighbors++;

if ((life_array[row+1][col+1])=='0')

num_neighbors++;

return num_neighbors;

}

My problem is that it isnt printing out correctly, If you could help me out i would greatly appreciate it.