C++ c++;数独棋盘行、列、子方块 #包括 #包括 #包括 #包括 使用名称空间std; 常数int MAX=9; typedef字符板[MAX][MAX]; 无效董事会(董事会); 作废新董事会(董事会、ifstream和in); 无效添加(); 撤除(董事会)职务; bool chk_行(板阵列、内部行、内部列); bool chk_col(板阵列、内部行、内部列); bool chk_sqr(板阵列、内部行、内部列); int main() { 董事会; int row=0,col=0,num_ele=0,num; char ch1; 河流充填; infle.open(“mp6in.txt”); 填充get(ch1); while(填充) { 如果(ch1='N') 新的_板(板,填充); 如果(chk_行==false) cout

C++ c++;数独棋盘行、列、子方块 #包括 #包括 #包括 #包括 使用名称空间std; 常数int MAX=9; typedef字符板[MAX][MAX]; 无效董事会(董事会); 作废新董事会(董事会、ifstream和in); 无效添加(); 撤除(董事会)职务; bool chk_行(板阵列、内部行、内部列); bool chk_col(板阵列、内部行、内部列); bool chk_sqr(板阵列、内部行、内部列); int main() { 董事会; int row=0,col=0,num_ele=0,num; char ch1; 河流充填; infle.open(“mp6in.txt”); 填充get(ch1); while(填充) { 如果(ch1='N') 新的_板(板,填充); 如果(chk_行==false) cout,c++,arrays,sudoku,C++,Arrays,Sudoku,chk_row是一个函数-您需要调用它。当前,您只需检查: #include<iostream> #include<fstream> #include<iomanip> #include<string> using namespace std; const int MAX = 9; typedef char BOARD[MAX][MAX]; v

chk_row
是一个函数-您需要调用它。当前,您只需检查:

       #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;
   }
这只是检查函数指针是否为false,这是永远不会发生的。您需要像这样调用函数:

if (chk_row == false)
您需要计算出
应该是什么。可能您需要一个循环来检查所有行和列,但我认为这是家庭作业,所以您应该自己尝试一下

if (chk_row(board, row, col) == false)