Случайная инициализация и вывод поля

This commit is contained in:
2024-12-03 14:22:14 +03:00
parent 7e9540f10c
commit 2e9fad26d8
3 changed files with 47 additions and 1 deletions

View File

@@ -2,4 +2,36 @@
CellularAutomaton::CellularAutomaton(int width, int height) : m_fieldWidth(width), m_fieldHeight(height)
{
field.resize(m_fieldHeight, std::vector<int>(m_fieldWidth, 0));
fieldNextState.resize(m_fieldHeight, std::vector<int>(m_fieldWidth, 0));
initializeRandom();
}
void CellularAutomaton::initializeRandom()
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(0, 1);
for (int y = 0; y < m_fieldHeight; ++y)
{
for (int x = 0; x < m_fieldWidth; ++x)
{
field[y][x] = dis(gen);
}
}
}
void CellularAutomaton::displayField() const
{
for (const auto& row : field)
{
for (const auto& cell : row)
{
std::cout << (cell ? '1' : '0') << ' ';
}
std::cout << '\n';
}
}

View File

@@ -1,8 +1,19 @@
#pragma once
#include <vector>
#include <random>
#include <iostream>
class CellularAutomaton
{
int m_fieldWidth, m_fieldHeight;
std::vector<std::vector<int>> field;
std::vector<std::vector<int>> fieldNextState;
void initializeRandom();
public:
CellularAutomaton(int width, int height);
void displayField() const;
};

View File

@@ -40,6 +40,9 @@ int main()
cout << "Укажите количество итераций (min 1): ";
int iterationsCount = inputNumber(1);
CellularAutomaton(fieldWidth, fieldHeight);
CellularAutomaton ca(fieldWidth, fieldHeight);
ca.displayField();
waitForEnter();
}
}