#include #include using namespace std; ofstream fout("Picture.txt"); bool SUM(int n, int ***Environment) { int SUM = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { SUM = SUM + Environment[i][j][0]; } } return (SUM == 0); } void createEnvironment(int zindex, int ***Environment) { for (int i = 0; i < zindex; i++) { for (int j = 0; j < zindex; j++) { if (Environment[i][j][0] == 0) fout << "|_|"; else fout << "|*|"; } fout << '\n'; } fout << "_______________________" << endl; } int Around(int i, int j, int n, int ***Environment) { int Around = 0; Around = Environment[(i - 1 + n) % n][(j - 1 + n) % n][0] + Environment[(i + n) % n][(j - 1 + n) % n][0] + Environment[(i + 1 + n) % n][(j - 1 + n) % n][0] + Environment[(i - 1 + n) % n][(j + n) % n][0] + Environment[(i + 1 + n) % n][(j + n) % n][0] + Environment[(i - 1 + n) % n][(j + 1 + n) % n][0] + Environment[(i + n) % n][(j + 1 + n) % n][0] + Environment[(i + 1 + n) % n][(j + 1 + n) % n][0]; return Around; } int NewGeneration(int n, int ***Environment) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { Environment[i][j][2] = Environment[i][j][1]; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { Environment[i][j][1] = Around(i, j, n, Environment); } } bool Difference = false; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (Environment[i][j][0] == 1) fout << "|*|"; else fout << "|_|"; if ((Difference == false) && (Environment[i][j][1] != Environment[i][j][2])) Difference = true; } fout << endl; } if (Difference == false) { fout << "_______________________" << endl; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { Environment[i][j][0] = 0; fout << "|_|"; fout << ' ' << ' '; } fout << endl; } } fout << "_______________________" << endl; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (Environment[i][j][0] == 1 && Environment[i][j][1] <= 3 && Environment[i][j][1] >= 2) Environment[i][j][0] = 1; else if (Environment[i][j][0] == 0 && Environment[i][j][1] == 3) Environment[i][j][0] = 1; else Environment[i][j][0] = 0; } } } int main(string input) { ifstream in(input); if (in.is_open()) { int count = 0; int temp; while (!in.eof()) { in >> temp; count++; } in.seekg(0, ios::beg); in.clear(); int count_space = 0; char symbol; while (!in.eof()) { in.get(symbol); if (symbol == ' ') count_space++; if (symbol == '\n') break; } in.seekg(0, ios::beg); in.clear(); int n = count / (count_space + 1); int m = count_space + 1; int zindex = n, yindex = m, xindex = 3; int ***Environment = new int **[zindex]; for (int i = 0; i < zindex; i++) { Environment[i] = new int *[yindex]; for (int j = 0; j < yindex; j++) { Environment[i][j] = new int[xindex]; } } for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) in >> Environment[i][j][0]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) cout << Environment[i][j][0] << "\t"; cout << "\n"; } in.close(); createEnvironment(zindex, Environment); int k = 0; while (!SUM(zindex, Environment) && k < 100) { k++; NewGeneration(zindex, Environment); } } else { cout << "File is not found!"; } return 0; }