首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >随机化二维阵列

随机化二维阵列
EN

Stack Overflow用户
提问于 2017-12-11 12:41:52
回答 1查看 36关注 0票数 0

我正在尝试使用rand()将来自1-9的值随机化一个2D array[3][3],然后将其解析为要放入数组中的字符。

代码语言:javascript
复制
#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)单元格被选中时,XO将被放在(bboard)上的一个随机单元格中,给你额外的获胜机会。我尝试过各种方法,但都没有编译过。这个方法编译了,但是我得到了一个以前没有遇到过的错误,也找不到问题。我已经尝试将ROWCOLbboard的声明移到main中,但仍然无法获得编译。该程序将与2硬编码的2D数组一起在main外部运行,但是rand()要求它在main内?

JGrasp会编译,但是当我运行代码时,会出现以下错误:

代码语言:javascript
复制
----jGRASP wedge: process died on signal 8.
----jGRASP: operation complete.
EN

回答 1

Stack Overflow用户

发布于 2017-12-11 13:08:55

问题出在行bboard[i][j] = char (rand() % i*COL+j+1);中的rand() % i*COL部件,这会产生divide-by-zero错误的情况。

您可以看到here生成的数字如下:

代码语言:javascript
复制
0
0
0
3
3
3
6
6
6

要更正此问题,您可以在bboard[i][j] = char (rand() % i*COL+j+1);行中使用(rand() % (i*COL+j+1)); (rand() % (i*COL+1)+j+1); (以更适合您的需求为准)更改part

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47746532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档