Originally Posted by
nonoob
Yes that part of the logic is correct now.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 25
#define COLS 25
void game_of_life(char o_arr[][COLS], char n_array[][COLS]);
int checkx(char arr[][COLS],int row, int col);
int main(void)
{
char array[ROWS][COLS],n_array[ROWS][COLS];
srand(time(NULL));
int i, j, r_integer[ROWS][COLS], num_gen;
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
r_integer[j][i] = (rand() % 100) > 50 ? 1 : 0;
}
}
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
if(r_integer[j][i] == 0)
array[j][i]=' ';
else
array[j][i]='X';
}
}
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
printf("%c", array[j][i]);
}
}
for(num_gen=0;num_gen<2;num_gen++){
printf("\nGeneration: %d\n", num_gen+1);
game_of_life(array,n_array);
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
array[j][i]=n_array[j][i];
}
}
for(i=0;i<ROWS;i++){
for(j=0;j<COLS;j++){
printf("%c", n_array[j][i]);
}
}
}
return(0);
}
void game_of_life(char o_arr[][COLS], char n_array[][COLS])
{
int i, j, num_neighbors=0;
for(i=0;i<COLS;i++){
for(j=0;j<ROWS;j++){
if ((o_arr[j][i])=='X'){
num_neighbors = checkx(o_arr, j+1, i+1);
if( num_neighbors <4 && num_neighbors >= 2)
n_array[j][i]='X';
else if (num_neighbors >=4 || num_neighbors < 2)
n_array[j][i]=' ';
}
else {
num_neighbors=checkx(o_arr, j+1, i+1);
if (num_neighbors == 3)
n_array[j][i]='X';
else
n_array[j][i]=' ';
}
}
}
}
int checkx(char arr[][COLS],int row, int col)
{
int num_neighbors = 0;
if ((arr[row-1][col-1])=='X')
num_neighbors++;
if ((arr[row-1][col])=='X')
num_neighbors++;
if ((arr[row][col-1])=='X')
num_neighbors++;
if ((arr[row][col+1])=='X')
num_neighbors++;
if ((arr[row+1][col-1])=='X')
num_neighbors++;
if ((arr[row+1][col])=='X')
num_neighbors++;
if ((arr[row+1][col+1])=='X')
num_neighbors++;
return(num_neighbors);
}
I corrected some places
And output :
Code:
mustafa@tosbag:~/Documents/My_C_Programs/Programming_Projects/CHAPTER8$ ./16
X X X X XXXXXX X X X XX XXXXX X X X X XXXX XX XX X XXX X XX X XX X XX X XXX X X X X X X X X XXXXXX X XX XXX XX X XX XXX X X X XXX XXX X X XXXX X X X XX X X XX XX X X XXXX XX X XXX XXX XXXX XXX XX XXXXX XX XXX XX XXXXX X X XXXX X X XXX X X X X X X X XXX X X X X X X X X X XX XXX XXX XXXXX XXXX X X XX X XXX XX X XXX XX XXX X X X X X XX XX XX X XX XXX XX XXXX X XXX X XX XXX XXXXX XX X X X XXXXX XX X XX XXXXXX XX XXX XXXX XXXX XXXX XX XX XXX X X X X X X X XX X XX XXXX
Generation: 1
X XXXX X XX XX X X X X X XXXXX XX XXX X X X X X X X X XX XXX X XX X XX X X X X XXX X XX XX XXXX X XX X X XX XX X X X XX X XX XX X XX X X X XX XXX XXX X X X X X XX X X XX X X XX XX XX X X X XX X X XXX XXXX XX XX XX XX X XX X X XX X XX X X X X XX X XXX X XX X X XX XX X X X X XX XX X XX X XXX X X X XX XX X X X X X X X X X X XX
Generation: 2
X XXX X XX XXXX X X X XX X XXXXXX X X X X X X X X XX X X X X XX X X X XX X XX XX XXXXX X X X XX X XX XX XX X X X XX X XXXX X XX X XXX X X X X XX X XX X XXXX XXXX XXXX X XXX X X X X X X X X X XX X XX X XX X X X X X XXX XX X XXXX XX X X X X X X XXX X X XXX X XX X XX X XX X X X X XX X XX X X XX XX XXXX X X X X X X X XX X