数独求解器输入

时间:2013-06-10 08:14:55

标签: c input sudoku backtracking

我在C中创建一个数独求解器并且无法获得用户输入。我写的代码没有将数据输入到游戏板中,但如果我将Game_Buffer[counter]更改为Game_Buffer[i],则输入数据但只输入9个字符。我知道为什么。我只是想看看他们是否在其他方面存在问题。

我的主要问题是:为什么我使用的方法没有将用户输入数据放入游戏板阵列?

#include <stdio.h>
#include <string.h>
#define CELL 81

int main()
{
    // Banner
    printf("\t\t\t\tSudoku Solver\n");
    printf("\t\t\t***************************\n");

    //initialize variables
    char Game_Board[9][9];
    int i,j;
    char Game_Buffer[CELL];
    int counter = 0;

    printf("Please enter the numbers of the board * denotes a blank space\n");
    fgets(Game_Buffer,CELL,stdin);

    for(i=0;i<strlen(Game_Buffer);i++)
        printf("%c", Game_Buffer[i]);

    while(counter < 81)
    {
        for(i=0; i<9; i++)
            for(j=0; j<9; j++)

                Game_Board [i][j] = Game_Buffer [counter];
                counter++;
    }

    printf("%d\n", counter);
    printf("\t\t\t\t The Board\n");

    for( i=0; i<9; i++)
        for( j=0; j<9; j++)
        {

            if( j % 3 == 0)
                printf("|");
            printf("%c", Game_Board[i][j]);
            if(j==8)
                printf("|\n");

        }

    return 0;
}

2 个答案:

答案 0 :(得分:3)

循环后执行counter++。我已经设计了代码以表明我的意思..

for(i=0; i<9; i++)
  for(j=0; j<9; j++)
    Game_Board [i][j] = Game_Buffer [counter];
counter++;

您正在使用相同的值更新所有单元格。

答案 1 :(得分:3)

你可能应该在第一时间使用括号。

    for(i=0; i<9; i++)
    {
        for(j=0; j<9; j++)
        {
            Game_Board [i][j] = Game_Buffer [counter];
            counter++;
        }
    }

添加所有缺失的括号并检查您的问题是否仍然存在。