13 bool readBoardFromFile(
const std::string& filename, std::array<std::array<int, N>, N>& board) {
14 std::ifstream file(filename);
15 if (!file.is_open()) {
16 std::cerr <<
"Error: Cannot open file " << filename <<
"\n";
20 for (
size_t row = 0; row < N; ++row) {
21 for (
size_t col = 0; col < N; ++col) {
22 if (!(file >> board[row][col])) {
23 std::cerr <<
"Error: Invalid format at row " << row <<
", col " << col <<
"\n";
34 std::cout <<
"Enter " << N <<
" rows of " << N <<
" numbers (0 for empty):\n";
35 for (
size_t row = 0; row < N; ++row) {
36 for (
size_t col = 0; col < N; ++col) {
37 if (!(std::cin >> board[row][col])) {
38 std::cerr <<
"Error: Invalid input at row " << row <<
", col " << col <<
"\n";
48 void printBoard(
const std::array<std::array<int, N>, N>& board) {
50 const int cell_width = 2;
52 for (
size_t row = 0; row < N; ++row) {
54 if (row % block_size == 0 && row != 0) {
55 for (
size_t i = 0; i < N; ++i) {
57 if (i % block_size == block_size - 1 && i != N - 1) {
64 for (
size_t col = 0; col < N; ++col) {
66 if (col % block_size == 0 && col != 0) {
70 int val = board[row][col];
75 std::cout << std::setw(cell_width) << val;
79 if (col < N - 1) std::cout <<
" ";
87 bool writeBoardToFile(
const std::string& filename,
const std::array<std::array<int, N>, N>& board) {
88 std::ofstream file(filename);
89 if (!file.is_open()) {
90 std::cerr <<
"Error: Cannot open file " << filename <<
" for writing\n";
94 for (
size_t row = 0; row < N; ++row) {
95 for (
size_t col = 0; col < N; ++col) {
96 file << board[row][col];
97 if (col != N - 1) file <<
" ";
Определения sudoku_io.h:9
bool readBoardFromStdin(std::array< std::array< int, N >, N > &board)
Определения sudoku_io.h:33
bool readBoardFromFile(const std::string &filename, std::array< std::array< int, N >, N > &board)
Определения sudoku_io.h:13
void printBoard(const std::array< std::array< int, N >, N > &board)
Определения sudoku_io.h:48
bool writeBoardToFile(const std::string &filename, const std::array< std::array< int, N >, N > &board)
Определения sudoku_io.h:87
constexpr size_t constexpr_sqrt(size_t n)
Вычисление целочисленного квадратного корня на этапе компиляции
Определения sudoku_solver.h:13