0

多次元配列を使用して、複雑な三目並べゲームを作成しようとしています。これは、これを出力することになっているコードの一部です。

 g | g | g
----------
 g | g | g
----------
 g | g | g

ここで、gはg[1][1]からg[3][3]までの多次元配列です。ここで、g[3][3]は文字列です。以下のプログラムは、上のボードの最初の行を印刷することになっています。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string g[3][3];
    g[1][1] = " ";
    g[2][1] = " ";
    g[3][1] = " ";
    g[1][2] = " ";
    g[2][2] = " ";
    g[3][2] = " ";
    g[1][3] = " ";
    g[2][3] = " ";
    g[3][3] = " ";
    cout << " " << g[1][1] << " " << "|" << " " << g[2][1] << " " << "|" << " " << g[3][1];
    cout << "----------------";
}

このプログラムを上で実行すると、コンソールが開き、「TESTIFICATE.exe」[2812]で未処理のwin32例外が発生します。デバッガーを選択することになっているウィンドウが表示されます。コンパイラを選択すると、Visual Studio 2010が開き、奇妙なヘッダーファイルが目の前に表示されます。

上記のプログラムはメインプログラムの一部であり、そのコードを追加するまではうまく機能し、そこから未処理のwin32例外メッセージが表示されることに注意してください。これは、これまでプログラムで私に起こったことはなく、プログラムは比較的単純なので、これは起こるはずがありません。

追加の詳細:

  • OS:Windows XP Professional SP3;
  • Visual Studio 2010をインストールしています(エクスプレス版ではありません)
  • 私はCodeblocksIDEを使用しています。
  • コンパイル時に、IDEに警告やエラーは表示されません。

さらに詳細が必要な場合はコメントに投稿してください。投稿します。

4

2 に答える 2

3

配列インデックスは、無効なメモリアクセスから始まり0ます。g[3][3]

于 2012-04-12T17:46:46.507 に答える
1

オフバイワンエラーがあります。

g[1][1]する必要がありますg[0][0]g[2][2]する必要がありますg[1][1]、など。

于 2012-04-12T17:47:13.440 に答える