The game of life is a computer simulation of the life and death events of a popu
ID: 3535886 • Letter: T
Question
The game of life is a computer simulation of the life and death events of a population of organisms. This program will determine the life, death, and survival of bacteria from one generation to the next, assuming the starting grid of bacteria is generation zero (0). Each cell has a total of up to 8 neighbors, including the 4 immediately adjacent cells and the 4 diagonal cells. The rules for the creation of each cell in the next generation are as follows:
First take a quick look at the contents of the following files data, correct output, and output including intermediate generations. .
Your task is to write a program that plays the game of life. The size of the grid will be a 20 x 20 square. Your solution must use a 20 X 20 two-dimensional array. Don't declare a bigger array!
It is permissible, of course, to use a second array of the same size if you find it convenient to do so. (DO NOT use pointers or vectors for this project)
The original grid of bacteria will be supplied to your program from a text file. The text file will contain one line of data for each bacteria in the original grid. Each line will consist of a pair of numbers, separated by a space. The first number will indicate the row location of the bacteria and the second number will indicate the column location of the bacteria. Every number in the text file will be between 0 and 19.
After your program has initialized the grid with generation 0, your program must allow life to proceed for 5 generations. Your program should then display the final results on the screen, using a star (*) to represent a live bacteria, along with the following statistical information:
Explanation / Answer
Here is what I got so far:
cpp
CODE
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cassert>
using namespace std;
const int SIZE = 20;
int main()
{
bool life[SIZE][SIZE];
int row, col;
//initialize array
for (int row = 0; row < SIZE; row++)
{
for (int col = 0; col < SIZE; col++)
{
life[row][col] = false;
}
}
//print contents of array after initialization
cout << " 01234567890123456789" << endl;
for (int row = 0; row < SIZE; row++)
{
cout << setw(2) << row;
for (int col = 0; col < SIZE; col++)
{
cout<<life[row][col];
}
cout << endl;
}
//readGrid
ifstream infile("lifedata.txt");
assert(infile);
infile >> row >> col;
while (infile)
{
life[row][col] = true;
infile >> row >> col;
}
infile.close();
//print contents of two-dimensional array
cout << " 01234567890123456789" << endl;
for (int row = 0; row < SIZE; row++)
{
cout << setw(2) << row;
for (int col = 0; col < SIZE; col++)
{
if (life[row][col])
{
cout << "*";
}
else
{
cout << " ";
}
}
cout << endl;
}
system ("PAUSE");
return 0;
}
Input:
0 0
0 5
0 9
0 19
1 6
1 14
1 16
2 4
2 7
2 11
2 14
2 15
2 16
2 18
3 2
3 5
3 9
3 10
3 17
3 19
4 0
4 3
4 5
4 9
5 2
5 3
5 5
5 15
5 16
5 17
6 5
6 6
6 10
6 11
6 13
6 14
6 17
6 18
7 6
7 8
7 14
7 16
8 1
8 5
8 8
8 10
8 17
9 3
9 4
9 6
9 7
10 0
10 9
10 19
11 1
11 2
11 3
11 5
11 7
11 8
11 14
11 17
11 19
12 4
12 5
12 6
12 8
13 0
13 1
13 7
13 10
13 11
13 14
13 15
13 16
13 17
13 18
14 2
14 11
14 13
14 15
14 17
14 19
15 11
15 13
15 18
16 1
16 2
16 5
16 8
16 17
17 5
17 6
18 6
18 16
18 18
19 0
19 3
19 4
19 7
Output:
01234567890123456789
0
1 * *
2 * * *** *
3 * **** *
4 * * * **
5 * * ***** *
6 ** * * *** *
7 * *** * *
8 ****
9 * ******
10* * *
11 * * ** *
12** **** ***
13 * *** ** *
14 * * * ***
15 ** *** ** **
16 * * **
17
18
19
Total alive in row 10 = 3
Total alive in col 10 = 1
Total alive = 95
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.