#include<iostream>
#include<fstream>
#include<iomanip>
#include<string>
using namespace std;
const int MAX = 9;
typedef char BOARD[MAX][MAX];
void dis_board(BOARD);
void new_board(BOARD, ifstream& in);
void add();
void remove(BOARD);
bool chk_row(BOARD arr, int row, int col);
bool chk_col(BOARD arr, int row, int col);
bool chk_sqr(BOARD arr, int row, int col);
int main()
{
BOARD board;
int row=0, col=0, num_ele = 0, num;
char ch1;
ifstream infile;
infile.open("mp6in.txt");
infile.get(ch1);
while (infile)
{
if (ch1 == 'N')
new_board(board, infile);
if (chk_row == false)
cout << "There is an error" << endl;
if (chk_col == false)
cout << "There is an error" << endl;
chk_sqr(board, 0, 0);
if (chk_sqr == false)
cout << "There is an error" << endl;
if (ch1 == 'D')
dis_board(board);
infile.get(ch1);
}
}
void dis_board(BOARD arr)
{
for (int i = 0; i < MAX; i++)
{
for (int j = 0; j < MAX; j++)
cout << setw(3) << arr[i][j];
cout << endl;
}
cout << endl;
}
void new_board(BOARD arr, ifstream& in)
{
in.ignore(100, '\n');
for (int i = 0; i < MAX; i++)
{
for (int j = 0; j < MAX; j++)
in.get(arr[i][j]);
in.ignore(100, '\n');
}
}
bool chk_row(BOARD arr, int row, int col)
{
for (int i = 0; i < MAX; i++)
{
if (i != col)
{
if (arr[row][i] == arr[row][col])
{
return false;
}
}
}
return true;
}
bool chk_col(BOARD arr, int row, int col)
{
for (int i = 0; i < MAX; i++)
{
if (i != row)
{
if (arr[i][col] == arr[row][col])
{
return false;
}
}
}
return true;
}
bool chk_sqr(BOARD arr, int row, int col)
{
int asquare = row/3;
int bsquare = col/3;
for (int i = asquare * 3; i < (asquare * 3 + 3); i++)
{
for (int j = bsquare * 3; j < (bsquare * 3 + 3); j++)
{
if (!(i == row && j == col))
{
if (arr[row][col] == arr[i][j])
{
return false;
}
}
}
}
return true;
}
На всякий случай я говорю с кем угодно, кроме меня. Я попытался реализовать следующие функции проверки, и, конечно, они работают неправильно. Например, я знаю, что моя первая доска имеет дублирующее число в нижнем правом блоке, но моя функция не может ее найти.C++ sudoku checker row, column, sub square