随机二维数组

时间:2017-12-11 04:41:52

标签: arrays

我正在尝试使用array[3][3]1-9的值随机化为rand(),然后将int解析为字符以放入数组中。

#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-9后,XO将被放置在(bboard)随机单元格中,为您赢取额外的机会。我尝试了各种方法,但没有编译过。这个方法编译,但是我得到了一个我以前没有遇到的错误,也没有找到问题。我已尝试将ROWCOLbboard的声明移到main但仍无法进行编译。该程序将在2之外的2D硬编码main数组中运行,但rand()要求它在main之内?

JGrasp编译但是当我运行代码时会发生以下错误:

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

1 个答案:

答案 0 :(得分:0)

问题在于rand() % i*COL排在bboard[i][j] = char (rand() % i*COL+j+1);行,这会产生divide-by-zero错误的情况。
您可以看到here生成的数字如下:

0
0
0
3
3
3
6
6
6

要更正,您可以在(rand() % i*COL+j+1);行中使用(rand() % (i*COL+j+1)); (rand() % (i*COL+1)+j+1);更改部分bboard[i][j] = char (rand() % i*COL+j+1);(更符合您的需要)。