Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. ofstream fout("Picture.txt");
  6.  
  7. bool SUM(int n, int ***Environment) {
  8.     int SUM = 0;
  9.     for (int i = 0; i < n; i++) {
  10.         for (int j = 0; j < n; j++) {
  11.             SUM = SUM + Environment[i][j][0];
  12.         }
  13.     }
  14.     return (SUM == 0);
  15. }
  16.  
  17. void createEnvironment(int zindex, int ***Environment) {
  18.     for (int i = 0; i < zindex; i++) {
  19.         for (int j = 0; j < zindex; j++) {
  20.             if (Environment[i][j][0] == 0)
  21.                 fout << "|_|";
  22.             else fout << "|*|";
  23.         }
  24.         fout << '\n';
  25.     }
  26.     fout << "_______________________" << endl;
  27. }
  28.  
  29. int Around(int i, int j, int n, int ***Environment) {
  30.     int Around = 0;
  31.     Around = Environment[(i - 1 + n) % n][(j - 1 + n) % n][0] +
  32.              Environment[(i + n) % n][(j - 1 + n) % n][0] +
  33.              Environment[(i + 1 + n) % n][(j - 1 + n) % n][0] +
  34.              Environment[(i - 1 + n) % n][(j + n) % n][0] +
  35.              Environment[(i + 1 + n) % n][(j + n) % n][0] +
  36.              Environment[(i - 1 + n) % n][(j + 1 + n) % n][0] +
  37.              Environment[(i + n) % n][(j + 1 + n) % n][0] +
  38.              Environment[(i + 1 + n) % n][(j + 1 + n) % n][0];
  39.     return Around;
  40. }
  41.  
  42. int NewGeneration(int n, int ***Environment) {
  43.     for (int i = 0; i < n; i++) {
  44.         for (int j = 0; j < n; j++) {
  45.             Environment[i][j][2] = Environment[i][j][1];
  46.         }
  47.     }
  48.     for (int i = 0; i < n; i++) {
  49.         for (int j = 0; j < n; j++) {
  50.             Environment[i][j][1] = Around(i, j, n, Environment);
  51.         }
  52.     }
  53.     bool Difference = false;
  54.     for (int i = 0; i < n; i++) {
  55.         for (int j = 0; j < n; j++) {
  56.             if (Environment[i][j][0] == 1)
  57.                 fout << "|*|";
  58.             else
  59.                 fout << "|_|";
  60.             if ((Difference == false) && (Environment[i][j][1] != Environment[i][j][2]))
  61.                 Difference = true;
  62.         }
  63.         fout << endl;
  64.     }
  65.     if (Difference == false) {
  66.         fout << "_______________________" << endl;
  67.         for (int i = 0; i < n; i++) {
  68.             for (int j = 0; j < n; j++) {
  69.                 Environment[i][j][0] = 0;
  70.                 fout << "|_|";
  71.                 fout << ' ' << ' ';
  72.             }
  73.             fout << endl;
  74.         }
  75.     }
  76.     fout << "_______________________" << endl;
  77.     for (int i = 0; i < n; i++) {
  78.         for (int j = 0; j < n; j++) {
  79.             if (Environment[i][j][0] == 1 && Environment[i][j][1] <= 3 && Environment[i][j][1] >= 2)
  80.                 Environment[i][j][0] = 1;
  81.             else if (Environment[i][j][0] == 0 && Environment[i][j][1] == 3)
  82.                 Environment[i][j][0] = 1;
  83.             else
  84.                 Environment[i][j][0] = 0;
  85.  
  86.         }
  87.  
  88.     }
  89. }
  90.  
  91. int main(string input) {
  92.     ifstream in(input);
  93.     if (in.is_open()) {
  94.         int count = 0;
  95.         int temp;
  96.         while (!in.eof()) {
  97.             in >> temp;
  98.             count++;
  99.         }
  100.         in.seekg(0, ios::beg);
  101.         in.clear();
  102.         int count_space = 0;
  103.         char symbol;
  104.         while (!in.eof()) {
  105.             in.get(symbol);
  106.             if (symbol == ' ') count_space++;
  107.             if (symbol == '\n') break;
  108.         }
  109.         in.seekg(0, ios::beg);
  110.         in.clear();
  111.         int n = count / (count_space + 1);
  112.         int m = count_space + 1;
  113.         int zindex = n, yindex = m, xindex = 3;
  114.         int ***Environment = new int **[zindex];
  115.         for (int i = 0; i < zindex; i++) {
  116.             Environment[i] = new int *[yindex];
  117.             for (int j = 0; j < yindex; j++) {
  118.                 Environment[i][j] = new int[xindex];
  119.             }
  120.         }
  121.         for (int i = 0; i < n; i++)
  122.             for (int j = 0; j < m; j++)
  123.                 in >> Environment[i][j][0];
  124.  
  125.         for (int i = 0; i < n; i++) {
  126.             for (int j = 0; j < m; j++)
  127.                 cout << Environment[i][j][0] << "\t";
  128.             cout << "\n";
  129.         }
  130.         in.close();
  131.         createEnvironment(zindex, Environment);
  132.         int k = 0;
  133.         while (!SUM(zindex, Environment) && k < 100) {
  134.             k++;
  135.             NewGeneration(zindex, Environment);
  136.         }
  137.     } else {
  138.         cout << "File is not found!";
  139.     }
  140.     return 0;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement