Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- #include <chrono>
- #include <thread>
- #include <stdlib.h>
- using namespace std;
- int IleJednakowychKomorek(bool** tablica, bool** tablica2, int wymiarY, int wymiarX)
- {
- int wynik = 0;
- for (int y = 0; y < wymiarY; y++)
- {
- for (int x = 0; x < wymiarX; x++)
- {
- if (tablica[y][x] == tablica2[y][x])
- {
- wynik++;
- }
- }
- }
- return wynik;
- }
- void tabelka(int wymiarY, int wymiarX)
- {
- cout << char(195);
- for (int x = 0; x < wymiarX; x++)
- {
- for (int y = 0; y < 3; y++)
- {
- cout << char(196);
- }
- if (x == wymiarX - 1)
- {
- cout << char(180);
- }
- else
- {
- cout << char(197);
- }
- }
- }
- void tabelkaKoniec(int wymiarY, int wymiarX)
- {
- cout << char(192);
- for (int x = 0; x < wymiarX; x++)
- {
- for (int y = 0; y < 3; y++)
- {
- cout << char(196);
- }
- if (x == wymiarX - 1)
- {
- cout << char(217);
- }
- else
- {
- cout << char(193);
- }
- }
- }
- void tabelkaGora(int wymiarY, int wymiarX)
- {
- cout << char(218);
- for (int x = 0; x < wymiarX; x++)
- {
- for (int y = 0; y < 3; y++)
- {
- cout << char(196);
- }
- if (x == wymiarX - 1)
- {
- cout << char(191);
- }
- else
- {
- cout << char(194);
- }
- }
- }
- void wypiszTablice(bool** tablica, int wymiarY, int wymiarX)
- {
- tabelkaGora(wymiarY, wymiarX);
- cout << endl;
- for (int y = 0; y < wymiarY; y++)
- {
- cout << char(179);
- for (int x = 0; x < wymiarX; x++)
- {
- if (x == 0)
- {
- if (tablica[y][x] == 1)
- {
- cout << " " << char(254) << " " << char(179) << " ";
- }
- else
- {
- cout << " " << " " << " " << char(179) << " ";
- }
- }
- else
- {
- if (tablica[y][x] == 1)
- {
- cout << char(254) << " " << char(179) << " ";
- }
- else
- {
- cout << " " << " " << char(179) << " ";
- }
- }
- }
- cout << endl;
- if (y == wymiarY - 1)
- {
- tabelkaKoniec(wymiarY, wymiarX);
- }
- else
- {
- tabelka(wymiarY, wymiarX);
- }
- cout << endl;
- }
- }
- int SprawdzSasiadow(bool** tablica, int y, int x, int wymiarY, int wymiarX)
- {
- int Wynik = 0;
- if (y == 0)
- {
- if (x == 0)
- {
- if (tablica[wymiarY - 1][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[wymiarY - 1][0] == 1)
- Wynik++;
- if (tablica[0][wymiarY - 1] == 1)
- Wynik++;
- if (tablica[wymiarY - 1][x + 1] == 1)
- Wynik++;
- if (tablica[y + 1][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[y + 1][x] == 1)
- Wynik++;
- if (tablica[y + 1][x + 1] == 1)
- Wynik++;
- if (tablica[y][x + 1] == 1)
- Wynik++;
- }
- else if (x == wymiarX - 1)
- {
- if (tablica[0][0] == 1)
- Wynik++;
- if (tablica[0][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[wymiarY - 1][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[wymiarY - 1][x - 1] == 1)
- Wynik++;
- if (tablica[0][x + 1] == 1)
- Wynik++;
- if (tablica[y + 1][x] == 1)
- Wynik++;
- if (tablica[y + 1][x - 1] == 1)
- Wynik++;
- if (tablica[y][x - 1] == 1)
- Wynik++;
- }
- else
- {
- if (tablica[wymiarY - 1][x] == 1)
- Wynik++;
- if (tablica[wymiarY - 1][x - 1] == 1)
- Wynik++;
- if (tablica[wymiarY - 1][x + 1] == 1)
- Wynik++;
- if (tablica[y][x - 1] == 1)
- Wynik++;
- if (tablica[y + 1][x - 1] == 1)
- Wynik++;
- if (tablica[y + 1][x] == 1)
- Wynik++;
- if (tablica[y + 1][x + 1] == 1)
- Wynik++;
- if (tablica[y][x + 1] == 1)
- Wynik++;
- }
- }
- else if (y == wymiarY - 1)
- {
- if (x == 0)
- {
- if (tablica[0][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[0][0] == 1)
- Wynik++;
- if (tablica[wymiarY - 1][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[y - 1][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[0][wymiarX + 1] == 1)
- Wynik++;
- if (tablica[y - 1][x] == 1)
- Wynik++;
- if (tablica[y - 1][x + 1] == 1)
- Wynik++;
- if (tablica[y][x + 1] == 1)
- Wynik++;
- }
- else if (x == wymiarX - 1)
- {
- if (tablica[0][0] == 1)
- Wynik++;
- if (tablica[wymiarY - 1][0] == 1)
- Wynik++;
- if (tablica[0][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[y - 1][0] == 1)
- Wynik++;
- if (tablica[0][x - 1] == 1)
- Wynik++;
- if (tablica[y][x - 1] == 1)
- Wynik++;
- if (tablica[y - 1][x - 1] == 1)
- Wynik++;
- if (tablica[y - 1][x] == 1)
- Wynik++;
- }
- else
- {
- if (tablica[y][x - 1] == 1)
- Wynik++;
- if (tablica[y - 1][x - 1] == 1)
- Wynik++;
- if (tablica[y - 1][x] == 1)
- Wynik++;
- if (tablica[y - 1][x + 1] == 1)
- Wynik++;
- if (tablica[y][x + 1] == 1)
- Wynik++;
- if (tablica[0][x] == 1)
- Wynik++;
- if (tablica[0][x - 1] == 1)
- Wynik++;
- if (tablica[0][x + 1] == 1)
- Wynik++;
- }
- }
- else
- {
- if (x == 0)
- {
- if (tablica[y - 1][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[y][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[y + 1][wymiarX - 1] == 1)
- Wynik++;
- if (tablica[y + 1][x] == 1)
- Wynik++;
- if (tablica[y + 1][x + 1] == 1)
- Wynik++;
- if (tablica[y][x + 1] == 1)
- Wynik++;
- if (tablica[y - 1][x + 1] == 1)
- Wynik++;
- if (tablica[y - 1][x] == 1)
- Wynik++;
- }
- else if (x == wymiarX - 1)
- {
- if (tablica[y - 1][0] == 1)
- Wynik++;
- if (tablica[y][0] == 1)
- Wynik++;
- if (tablica[y + 1][0] == 1)
- Wynik++;
- if (tablica[y + 1][x] == 1)
- Wynik++;
- if (tablica[y + 1][x - 1] == 1)
- Wynik++;
- if (tablica[y][x - 1] == 1)
- Wynik++;
- if (tablica[y - 1][x - 1] == 1)
- Wynik++;
- if (tablica[y - 1][x] == 1)
- Wynik++;
- }
- else
- {
- if (tablica[y - 1][x - 1] == 1)
- Wynik++;
- if (tablica[y - 1][x] == 1)
- Wynik++;
- if (tablica[y - 1][x + 1] == 1)
- Wynik++;
- if (tablica[y][x - 1] == 1)
- Wynik++;
- if (tablica[y][x + 1] == 1)
- Wynik++;
- if (tablica[y + 1][x + 1] == 1)
- Wynik++;
- if (tablica[y + 1][x - 1] == 1)
- Wynik++;
- if (tablica[y + 1][x] == 1)
- Wynik++;
- }
- }
- return Wynik;
- }
- void wpisanieWartosci(bool** tablica, bool** tablica2, int wymiarY, int wymiarX)
- {
- for (int y = 0; y < wymiarY; y++)
- {
- for (int x = 0; x < wymiarX; x++)
- {
- if (tablica[y][x] == 0)
- {
- if (SprawdzSasiadow(tablica, y, x, wymiarY, wymiarX) == 3)
- {
- tablica2[y][x] = 1;
- }
- else
- {
- tablica2[y][x] = 0;
- }
- }
- else
- {
- if (SprawdzSasiadow(tablica, y, x, wymiarY, wymiarX) == 2 || SprawdzSasiadow(tablica, y, x, wymiarY, wymiarX) == 3)
- {
- tablica2[y][x] = 1;
- }
- else
- {
- tablica2[y][x] = 0;
- }
- }
- }
- }
- }
- int main()
- {
- using namespace std::this_thread;
- using namespace std::chrono_literals;
- using std::chrono::system_clock;
- int wymiarY = 13; // wymiar tablicy pionowy
- int wymiarX = 10; // wymiar tablicy poziomy
- srand(time(NULL));
- //deklaracja tablic, wypelnienie
- bool** tablica = new bool* [wymiarY];
- for (int y = 0; y < wymiarY; y++)
- {
- tablica[y] = new bool[wymiarX];
- for (int x = 0; x < wymiarX; x++)
- {
- tablica[y][x] = rand() % 2;
- }
- }
- bool** tablica2 = new bool* [wymiarY];
- for (int y = 0; y < wymiarY; y++)
- {
- tablica2[y] = new bool[wymiarX];
- }
- //wyrzucenie wartosci
- for (int y = 0; y >= 0; y++)
- {
- if (IleJednakowychKomorek(tablica, tablica2, wymiarY, wymiarX) == wymiarY * wymiarX)
- {
- wypiszTablice(tablica, wymiarY, wymiarX);
- cout << endl;
- cout << "Komorki w tablicach zrownaly sie/sa stale.";
- cout << endl;
- system("pause");
- }
- else
- {
- wpisanieWartosci(tablica, tablica2, wymiarY, wymiarX);
- wypiszTablice(tablica2, wymiarY, wymiarX);
- sleep_for(1000ms);
- system("cls");
- wpisanieWartosci(tablica2, tablica, wymiarY, wymiarX);
- wypiszTablice(tablica, wymiarY, wymiarX);
- sleep_for(1000ms);
- system("cls");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement