0

残念ながら、作成しようとしているプログラムで別の問題が発生しました。まず第一に、私は C プログラミングがまったく初めてで、Word Searchを作成しようとしています。

私は C++ にあるこのコードを持っていて、それを C に変換しようとしています:

#include <iostream>

using namespace std;

int main()
{
    char puzzle[5][5] = {
        'A', 'J', 'I', 'P', 'N',
        'Z', 'F', 'Q', 'S', 'N',
        'O', 'W', 'N', 'C', 'E',
        'G', 'L', 'S', 'X', 'W',
        'N', 'G', 'F', 'H', 'V',
    };
    char word[5] = "SNOW"; // The word we're searching for
    int i;
    int len; // The length of the word
    bool found; // Flag set to true if the word was found
    int startCol, startRow;
    int endCol, endRow;
    int row, col;

    found = false;

    i   = 0;
    len = 4;

    // Loop through each character in the puzzle
    for(row = 0; row < 5; row ++) {
        for(col = 0; col < 5; col ++) {
            // Does the character match the ith character of the word
            // we're looking for?
            if(puzzle[row][col] == word[i]) {
                if(i == 0) { // Is it the first character of the word?
                    startCol = col;
                    startRow = row;
                } else if(i == len - 1) { // Is it the last character of the
                                          // word?
                    endCol = col;
                    endRow = row;

                    found = true;
                }

                i ++;
            } else
                i = 0;
        }

        if(found) {
            // We found the word
            break;
        }
    }

    if(found) {
        cout << "The word " << word << " starts at (" << startCol << ", "
             << startRow << ") and ends at (" << endCol << ", " << endRow
             << ")" << endl;
    }

    return 0;
}

しかし、C プログラミングがブール値をサポートしていないことに気付いたので、問題が発生しました。

私はそれを使用しているので、ユーザーは検索している単語 (例: boy) を入力し、ユーザーは長さ ( 3 ) も入力し、ユーザーは単語の最初と最後の文字の座標を入力します. ユーザーが次のように入力すると、上記のコードから座標を取得し、ユーザーが入力したものと比較する予定です。一致しない場合はユーザーが間違って推測し、一致する場合はユーザーが正しく推測したことになります。

ライブラリも試しましたstdbool.hが、ライブラリが見つからなかったため機能しませんでした。

の代わりに他の方法はありstdbool.hますか?true = 1 、 false = 0 を使用していることは知っていますが、次のコードでそれを解釈する方法が正確にはわかりません。

前もって感謝します。

4

4 に答える 4

1

あなたはそれを言う

stdbool.h ライブラリも試しましたが、ライブラリが見つからなかったため機能しませんでした。

したがって、適合する C99 または C2011 コンパイラを見つけて使用することをお勧めします。少なくとも前者は、手に入れるのが難しすぎてはいけません。どちらも確実にヘッダーを提供し、それを使用することがおそらく最も便利な方法です。

あなたのコードにはまだいくつかの C++ 主義 (ステートメントcoutusingC++ スタイル#includeなど) が含まれているため、C++ コンパイラでコンパイルしていると思いがちです。stdbool.hこれが、ヘッダーが見つからない理由の 1 つとして考えられます。C に変換する場合は、必ず C コンパイラでコードをビルドしてください。

于 2016-01-08T18:27:42.050 に答える
1

C99 には<stdbool.h>ヘッダーがあります。

于 2016-01-08T18:09:25.630 に答える
0

等しいか等しいとaintを使用できます1true0false

しかし、プログラムの上部にあるコードでこれを使用します.2つの定数は、単語を使用し、TRUEブールFALSE値であるかのように使用します:

#define FALSE 0
#define TRUE  1
于 2016-01-08T18:10:23.357 に答える