Hi,
Again a question from the book(Problem solving and program design in C)
I solved the question.But output not as I want to be.I mean it doesn't work as game of life
Code:
Code:
#include <stdio.h> 
#include <stdlib.h>
#define ROWS 25
#define COLS 25
void game_of_life(char arr[][COLS+2]);
int checkx(char arr[][COLS+2], int row, int col);
int main(void)
{
	char array[ROWS+2][COLS+2],n_array[ROWS+2][COLS+2];
	int i, j, r_integer[ROWS+2][COLS+2], num_gen;
	for(i=0;i<ROWS+2;i++){
		for(j=0;j<COLS+2;j++){
			r_integer[j][i] = (rand()%2);
		}
	}
	for(i=0;i<ROWS+2;i++){
		for(j=0;j<COLS+2;j++){
			  if(r_integer[j][i] == 0)
                  array[j][i]=' ';
              else
				  array[j][i]='X';            
			}
		}			
	for(i=0;i<ROWS+2;i++){
		for(j=0;j<COLS+2;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(n_array);
		for(i=0;i<ROWS+2;i++){
			for(j=0;j<COLS+2;j++){
				n_array[j][i]=array[j][i];
			}
		}
		for(i=0;i<ROWS+2;i++){
			for(j=0;j<COLS+2;j++){
				printf("%c", array[j][i]);
			}
		}
	}
	return(0);
}
void game_of_life(char arr[][COLS+2])
{
	int i, j, num_neighbors=0;
	for(i=1;i<COLS+2;i++){     
		for(j=1;j<ROWS+2;j++){
			if ((arr[j][i])=='X'){
				num_neighbors=checkx(arr, j, i);
				if (num_neighbors <= 3 || num_neighbors >= 2)
					arr[j][i]='X';
				if (num_neighbors >= 4)  
					arr[j][i]=' ';
				else
					arr[j][i]='X';
            }
			else {
				num_neighbors=checkx(arr, j, i);
                if(num_neighbors == 3)   
					arr[j][i]='X';
                else
					arr[j][i]=' ';
              }
          }
      }
}
		
int checkx(char arr[][COLS+2],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-1][col-1])=='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);
}
Output is not changing

X XXXX XX X XX X XX XXXX XXX X XXXX X X X X X XXX X X XXX X X X X X XX X X XX XXX X X XXX X XXXXXXXXXX XX X XX X XXX X X X X XXXX X X X XXXXX XX XX X XXXXX XX X XXX XXX X X X X XX X XXX X XX X XXX X X X XX XXXX X XXXX XXX X XX X X XX X XX XXXXX XX XX X X X XX X X XXX X XXX X X XXXX XX X X X X XXX X X XX XXXXX X X XX X X XXXX X XX XXX X XX XX XXXXX XXXX XX X XX X XXXXX X XX X X X X X XXXX X X XX XX XX X XXXXX XXX XXXXX X XX X X XXXX XXXXX XXX XXXXX XXXXXX XX XX X XXX XXXX XXX XXX XX XXX X X X X X X XX XXX X X X XXXXXX XX X XX XXX
Generation: 1
X XXXX XX X XX X XX XXXX XXX X XXXX X X X X X XXX X X XXX X X X X X XX X X XX XXX X X XXX X XXXXXXXXXX XX X XX X XXX X X X X XXXX X X X XXXXX XX XX X XXXXX XX X XXX XXX X X X X XX X XXX X XX X XXX X X X XX XXXX X XXXX XXX X XX X X XX X XX XXXXX XX XX X X X XX X X XXX X XXX X X XXXX XX X X X X XXX X X XX XXXXX X X XX X X XXXX X XX XXX X XX XX XXXXX XXXX XX X XX X XXXXX X XX X X X X X XXXX X X XX XX XX X XXXXX XXX XXXXX X XX X X XXXX XXXXX XXX XXXXX XXXXXX XX XX X XXX XXXX XXX XXX XX XXX X X X X X X XX XXX X X X XXXXXX XX X XX XXX
Generation: 2
X XXXX XX X XX X XX XXXX XXX X XXXX X X X X X XXX X X XXX X X X X X XX X X XX XXX X X XXX X XXXXXXXXXX XX X XX X XXX X X X X XXXX X X X XXXXX XX XX X XXXXX XX X XXX XXX X X X X XX X XXX X XX X XXX X X X XX XXXX X XXXX XXX X XX X X XX X XX XXXXX XX XX X X X XX X X XXX X XXX X X XXXX XX X X X X XXX X X XX XXXXX X X XX X X XXXX X XX XXX X XX XX XXXXX XXXX XX X XX X XXXXX X XX X X X X X XXXX X X XX XX XX X XXXXX XXX XXXXX X XX X X XXXX XXXXX XXX XXXXX XXXXXX XX XX X XXX XXXX XXX XXX XX XXX X X X X X X XX XXX X X X XXXXXX XX X XX XXX