2013-06-10 2 views
0

Я создаю решатель sudoku на C и проблема с получением пользовательского ввода. Код, который я написал, не вводит данные в игровое поле, но если я меняю Game_Buffer[counter] на Game_Buffer[i], он вводит данные, но только 9 символов. Я знаю, почему. Я просто хотел посмотреть, есть ли проблемы в других областях.Sudoku Solver Input

Мой основной вопрос: Почему метод, который я использую, не помещает входные данные пользователя в массив игровой панели?

#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; 
} 
+0

Пользовательский ввод должен быть линейным без пробелов, которые вы вводите в столбцы. Я использовал fgets, потому что я не был уверен в каких-либо других функциях ввода. – KryptNick

+0

Я имел в виду, что информация вводится строками – KryptNick

ответ

3

Возможно, вы должны использовать скобки на первом месте.

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

Добавить все отсутствующие скобки и проверить, существует ли проблема.

+0

Я добавил скобки и теперь это работает. Благодарю. Я не знал, что скобки сделали большую разницу. Я предполагаю, что это была проблема с объемом. Еще раз спасибо – KryptNick

+2

KryptNick вот что @vidit пытался объяснить вам – pinkpanther

3

counter++ выполняет после цикла. Я указал код, чтобы показать, что я имею в виду.

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

Вы обновляете все ячейки с одинаковым значением.

+0

Нет. Я хочу, чтобы счетчик увеличивался через буфер и помещался в правильную строку в двойном массиве Game_Board. Вышеуказанный метод помещает один и тот же символ в один столбец и добавит только первые 9 символов к доске. – KryptNick

+1

Да, я пытаюсь указать на проблему в вашем коде – vidit

+0

Извините, что vidit Я упустил из виду тот факт, что так мой код обрабатывал цикл. – KryptNick