2

数値を配列に格納する方法はわかりましたが、数独プログラムを作成していて、入力ファイルから読み取って格納する必要があります。ファイルには半分完成した Sudoku ボードが含まれているので、それを使っていくつかの作業を行う必要があります。私の問題は、ボード上の数字が 123456789 のようにスペースで区切られていないことです。各数字を個別に読み取って、配列内の異なる位置に格納する必要があります。ただし、cin はグループ全体を取得するだけですが、cin.get() は ASCII 値を取得します...そのため、それらを個別に保存する方法について少し混乱しています。たぶん、私が見ていないだけの明らかな答えかもしれませんが、わかりません。どんな助けでも大歓迎です。

返信ありがとうニック。入力ファイルから 2 次元配列を埋める小さな関数があります。ここにあります:

for ( i = 0; i < 行; i++ ) {

    for ( j = 0; j < COLS ; j++ )
        {
             in.get(getData);
             data = getData - '0';
            myArray[i][j] = data;
        }


}

あなたが推奨した getData - '0' 部分を追加しましたが、これを出力として取得していることを除いて、機能しているようです。

1|2|3|4|5|6|7|8|9| -38|1|2|3|4|5|6|7|8| 9|-38|1|2|3|4|5|6|7| 8|9|-38|1|2|3|4|5|6| 7|8|9|-38|1|2|3|4|5| 6|7|8|9|-38|1|2|3|4| 5|6|7|8|9|-38|1|2|3| 4|5|6|7|8|9|-38|1|2| 3|4|5|6|7|8|9|-38|1|

現在の入力ファイルは '123456789' の 9X9 行と列なので、それを出力するだけです。-38 がどこから来ているのかわからない? それを表示するコードは、現在は機能が異なるだけで、それを埋めるコードと実質的に同じです。何か案が?その間、いじくり回します。

わかりました、それは気にしないでください、私はそれがエンドラインを読んでいて、物事を混乱させていることに気づきました. そこに cin.get(temp) を少し入れて、エンドラインを読んで続行しました。それが正しいやり方であることを願っています。

4

1 に答える 1

0

次のようなことを試してください:

char c;

while(cin.get(c))
{ 
    if(!std::isdigit(c))
    { 
        /* not a digit - do whatever you want here */
    }

    int digit = c - '0';

    /* now digit contains the integer value of the digit in 'c' and you
     * can use it as needed. Let's call a function called dsw:
     */
    dsw(digit);
}
于 2012-11-30T03:18:37.767 に答える