【问题标题】:working with a 3D array使用 3D 数组
【发布时间】:2015-05-09 08:42:17
【问题描述】:

我将用标准的“我是 C++ 新手”声明作为开头。这是我第一次使用数组并且遇到了一些困难。

我一般理解数组。我也了解初始化数组。我苦苦挣扎的地方是从我的 3D 阵列中打印特定的行/列。基本上,我们有三个月的大量高温和低温。目标是根据用户请求打印数组的各种子集。 Here 是我的程序的外壳。对于初学者,我只输入了 3 天的数据。

提供了计算平均值、最大值和最小值的函数。也许我没有完全理解这些功能是如何运作的。

我是这样开始的:

case 'A':
    cout << "Which month? ('J' for June, 'U' for July, 'A' for Aug)" << endl;
cin >> y;
    switch (y)
    {
    case 'J':
        cout << "The average for June was " << for (i=0; i<DAY; i++)
        {
            for (j=0; j<1; j++)
            {
                for (k=0; k<XTR; k++)
                {
                    average_array[3][0][2];
                }
            }
        } << endl; break;

我想调用函数 average_array 来迭代所有 (3) 天,仅在 6 月份,并打印结果。

我还尝试替换以下内容:

average_array[DAY][MONTH][XTR];

for (i=0; i<30; i++)
{
    for (j=0; j<1; j++)
    {
        for (k=0; k<2; k++)

非常感谢任何建议!显然,我的做法完全错误,只是不理解如何引用数组中的特定值集。我们的教科书最接近解释这一点的是遍历 1D 和 2D 数组并打印结果。这是一项小任务,但理解这一点是完成我们下一个(也是最后一个)大型项目的关键。

【问题讨论】:

  • std::array 和 std::vector 是制作事物的“新”方式,但牢牢掌握 C 风格的数组并没有什么坏处。
  • 是的,特别是如果他试图cout &lt;&lt; for...

标签: c++ arrays function multidimensional-array


【解决方案1】:

以下语句定义了一个(C 风格)数组数组的整数数组:

int a[A][B][C];

变量a现在指的是一个由数组组成的数组。

循环遍历所有值确实是:

for(int i=0;i<A;++i){
    for(int j=0;j<B;++j){
        for(int k=0;k<C;++k){
            // do whatever....
        }
    }
}

如果您只想要一个特定的索引来表示第二个“循环”,请删除该循环,例如:

for(int i=0;i<A;++i){
    for(int k=0;k<C;++k){
        std::cout << a[i][2][k];
    }
}

【讨论】:

    【解决方案2】:

    for 循环不能用作 cout 的输入。您应该像这样分别计算每个数组值:

    cout << "The average for June was ";
    for (i=0; i<DAY; i++) {
       for (j=0; j<1; j++){
           for (k=0; k<XTR; k++){
               cout << average_array[3][0][2];
               //to make it a little nicer, use this
               //cout << ", "
           }
       }
    } 
    cout << endl;
    

    但是,即使采用上述修复方法,也存在一些问题:

    1. 这只是多次打印出average_array[3][0][2] 的值。如果您想打印出数组中的每个值,请将[3][0][2] 更改为[i][j][k]

    2. 你的for (j=0; j&lt;1; j++) 只循环一个 j 的值,即 0。没有理由有这个循环。

    【讨论】:

    • 感谢您的回复!所以对于 2。我将它设置为 (j=0; j
    • @d3adlycasanova 即使 June 的索引为 0,(这取决于您如何设置数组)您仍然可以省略 for 循环并使用 [i][0][k],因为您永远不会更改该值。
    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2012-05-26
    • 2013-08-14
    • 2013-03-31
    相关资源
    最近更新 更多