使用3D数组

时间:2015-03-07 22:38:27

标签: c++ arrays function multidimensional-array

我将在标准“我是C ++新手”声明的前言。这是我第一次使用数组并遇到一些困难。

我一般都了解数组。我也理解初始化数组。我正在努力的是从我的3D阵列打印特定的行/列。基本上,我们有三个月的大量高低温。目标是根据用户请求打印阵列的各种子集。 Here是我程序的shell。我为初学者输入了仅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来迭代6月份的所有(3)天,然后打印结果。

我也试过替换像:

这样的东西
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阵列并打印结果。这是一个小任务,但理解这是完成我们下一个(也是最后一个)大型项目的关键。

2 个答案:

答案 0 :(得分:1)

for循环不能用作cout的输入。你应该像这样分别对每个数组值进行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<1; j++)只会循环遍历j的一个值,即0.没有理由进行此循环。

答案 1 :(得分: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....
        }
    }
}

如果您只想要一个特定的索引来说第二个&#34;循环&#34;,请删除该循环,例如:

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