1

配列の名前を出力するプログラムを作成しようとしています。配列はチェス盤の最初の行を表します。私の試みは次のプログラムですが、私が達成できる唯一のことは数字を印刷することです:( .

    #include <iostream>

     using namespace std;

      void  main()

       enum pions // giving the names in pions 
       { 
       Tower=1 ,
       Horse ,
       Officer ,
       Princes ,
       King };

     int Chess [0][8]={Tower , Horse , officer , Princes , King , Officer , Horse , Tower };    

     // putting the names of each coordinate in the array (above ) .

    cout << " in this place the pion that is placed is the  " << chess [0][1] << endl;

プログラムが数字 2 を出力することはわかっていますが、 2 の代わりに「Horse」という単語を出力するにはどうすればよいですか ???

cout コマンドは、プログラムの作成者 (me :P) によって作成されます。印刷される配列の部分を選択するオプションをユーザーに与えるにはどうすればよいですか?

あなたの時間と労力を前もって感謝します.

どんな推奨事項も大歓迎です。

4

4 に答える 4

2

Chess型のパラメーターを受け取り、文字列を返す関数を作成する必要があります。これがうまくいくものです:

const char *chessPieceName(Chess piece)
{
    switch(piece) {
        case Tower:
            return "Tower";
            break;
        case Horse:
            return "Horse";
            break;
        // etc.
        default:
            return "Not a valid piece";
            break;
    }
}

この関数を次から呼び出すことができますmain

cout << " in this place the pion that is placed is the  " << chessPieceName(chess[0][1]) << endl;

そうは言っても、コードにはコンパイルを妨げる他の多くの問題があります。あなたはあなたが尋ねた質問に興味があるように見えるので、私はそれらを調べるつもりはありません.

于 2013-11-11T16:23:02.707 に答える
0

列挙型の識別子を出力することはできません。

列挙型を入力パラメーターとして受け取り、必要な名前の std::string を返す別の関数を作成する必要があります。たとえば、 を渡すとpions::Tower、"Tower" が返されます。渡すとpions::Horse「Horse」が返ってきます。等。

ヒント: godel9 の回答がswitch示すように、その関数の本体でステートメントを使用します。

于 2013-11-11T16:23:00.677 に答える