Like Quantum1024 said, check your alive logic. Your overstepping your array bounds in your alive function. Remember that x-1 and x+1 aren't necessarily inside your array. That's a bug.
Also, take a look at this:
Code:
void cycle (char table[ MAX ][ MAX ], int &total)
//calculate each generation and assign new locations
{
char temp[ MAX ][ MAX ];
bool life;
fill (temp);
for (int generation = 0; generation < 5; generation++)
{
for (int row = 0; row < MAX; row++)
for (int col = 0; col < MAX; col++)
{
life = alive(table, row, col);
if (life)
temp[ row ][ col ] = '*';
}
table = temp;
}
print (table);
}
You can't assign arrays like that. You either need to do a member-wise copy, or just use memcpy.
Code:
//member-wise copy
for (int row = 0; row < MAX; row++)
for (int col = 0; col < MAX; col++)
table[ row ][ col ] = temp[ row ][ col ];
//memcpy
memcpy(table,temp,sizeof(char)*100*100);
It would help if you told us exactly what kind of errors you were getting.