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:
Output is not changingCode:#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);
}
Quote:
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