2017-12-11 22 views
0

2D array[3][3]の値を1-9からrand()を使用してランダム化してから、intを解析して配列に配置します。ランダム化2D配列

#include <cstdlib> 
#include <ctime> 
#include <iostream> 
#include <cmath> 
#include <iomanip> 

using namespace std; 

void showgame(); 
void player(); 
bool gameover(); 

char player1, player2; 
char user; 
bool tie = false; 
const int ROW = 3; 
const int COL = 3; 
int bboard[ROW][COL]; 

char aboard[3][3]= {{'1', '2', '3'}, 
        {'4', '5', '6'}, 
        {'7', '8', '9'}}; 

int main() 
{ 

unsigned seed = time(0); 
srand(seed); 

for(int i=0; i<ROW; i++) 
    for(int j=0; j<COL; j++) 
     bboard[i][j] = char (rand() % i*COL+j+1); 

結果は、ハードコードされたtictactoeボードとランダム化されたボードになります。 (aboard)セルが選択された場合、1-9XまたはOは、勝利のチャンスを与えられたランダムなセルに配置されます。私はこれを行う様々な方法を試みたが、誰もコンパイルしていない。このメソッドはコンパイルされますが、以前に遭遇したことのないエラーが発生したり、問題を見つけることができません。 ROWCOLおよびbboardの宣言をmainに移動しようとしましたが、まだコンパイルできません。プログラムは、mainの外側にあるのハードコードの2Dで実行されますが、rand()mainの範囲内にある必要がありますか?

----jGRASP wedge: process died on signal 8. 
----jGRASP: operation complete. 

答えて

0

問題は、これがdivide-by-zeroエラーのシナリオを生成するラインbboard[i][j] = char (rand() % i*COL+j+1);rand() % i*COL一部である:私は、次のエラーが発生したコードを実行するとき

JGraspしかしコンパイル。
あなたは、生成hereその数は以下の通りです見ることができます:

0 
0 
0 
3 
3 
3 
6 
6 
6 

を使用すると、行bboard[i][j] = char (rand() % i*COL+j+1);で(より良いあなたのニーズに合った方)(rand() % (i*COL+j+1));OR(rand() % (i*COL+1)+j+1);で一部(rand() % i*COL+j+1);を変更することができます修正するには。