首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >问题填充和输出三维数组

问题填充和输出三维数组
EN

Stack Overflow用户
提问于 2016-02-25 01:14:41
回答 2查看 598关注 0票数 0

我正在尝试创建一个三维数组,它被0到9之间的伪随机数填充(包括在内)。这是我第一次使用包含超过2维的数组,所以我有点迷路了。

最初,输入到数组中的唯一数字是1,但是在更改了一些代码之后,除了最后一个数字之外,每个数字都是1,最后一个数字是伪随机的。更糟糕的是,在我所处的新情况下,当我按回车时,我会收到一条奇怪的错误信息。

除了这两个错误(填充数组错误和调试错误)之外,我也不知道如何在世界上以3组3×3的数字打印出来,尽管现在,这是我议程上的一个较低的问题(尽管这方面的提示会更好)。

代码语言:javascript
运行
复制
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main(){

    srand(time(NULL));


    const int arrayRow = 3, arrayColumns = 3, arrayDepth = 3;

    int fun[arrayRow][arrayColumns][arrayDepth];

    for (int r = 0; r < 4; r++){
        for (int c = 0; c < 4; c++){
            for (int d = 0; d < 4; d++){
                int value = rand() % 10;
                fun[r][c][d] = value;
                cout << fun[arrayRow][arrayColumns][arrayDepth];
            }
        }
    }
    cout << "Complete." << endl;
    system("pause");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-25 01:16:19

声明一个3x3x3数组。

然后继续初始化,就好像它是一个4x4x4数组。下面是对代码哪里出错的简化解释:

代码语言:javascript
运行
复制
int foo[3];

这声明了一个3元素数组.foo[0]通过foo[2]

代码语言:javascript
运行
复制
for (int bar=0; bar<4; ++bar)
{
    foo[bar]=1;
}

这将尝试通过foo[0]初始化foo[3]。四个元素。三元素数组。

未定义的行为。

您的代码在所有三个维度上都会产生相同的错误,但使用的是三维数组.

票数 1
EN

Stack Overflow用户

发布于 2016-02-25 01:22:57

代码语言:javascript
运行
复制
fun[arrayRow][arrayColumns][arrayDepth]

分配一个数组,该数组的索引范围为0。2在每个轴上。

代码语言:javascript
运行
复制
 for (int r = 0; r < 4; r++){

在0到3之间漫游,并超出数组。

代码语言:javascript
运行
复制
for (int r = 0; r < arrayRow; r++){

就能解决这个问题。您必须对其他for循环做同样的操作,因为它们都超出了范围。

此外,

代码语言:javascript
运行
复制
cout << fun[arrayRow][arrayColumns][arrayDepth];

决意

代码语言:javascript
运行
复制
cout << fun[3][3][3];

并且超出了范围,并且总是返回相同的值。

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

https://stackoverflow.com/questions/35616443

复制
相关文章

相似问题

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