如何添加2D数组的行(和列)

时间:2010-07-13 20:55:36

标签: c++ arrays

如何编写一个函数来添加2D数组中每行的内容?要添加每列的内容? 我的代码(到目前为止):

#include <iostream>

using namespace std;
const int QUARTER = 4;

void getdata(float [][QUARTER], int);
void displaydata (float [][QUARTER], int);
void quartertotal(float [][QUARTER], int);


int main()
{
  const int DIVISION = 6;
  float data[DIVISION][QUARTER] = {0};
  float getarray[DIVISION][QUARTER];


  for (int a=0; a < DIVISION; a++)
  {
    for (int b = 0; b< QUARTER; b++)
    {
      cout << "Enter sales for Division ";
      cout<< a+1;
      cout<< " Quarter ";
      cout<< b+1;
      cout<< ": ";
      cin >> getarray[a][b];
    }
  }

  displaydata(getarray, DIVISION);
  cout << endl;

  quartertotal(getarray,DIVISION);
  cout << endl;

  cout << endl << endl;

  return 0;

}

(float getarray[][QUARTER], int divisions)
{
  cout<<"\t\t\t\tQ1\tQ2\tQ3\tQ4\n";
  for (int i = 0; i < divisions; i++)
  {
    cout << "Sales for Division " << (i+1) << " are: \t";
    for (int j=0; j < QUARTER; j++)
      cout << getarray[i][j] << "\t";
    cout << endl;
  }
}

4 个答案:

答案 0 :(得分:1)

我希望你对1维数组的概念感到满意。 现在首先概述多维(2D,3D等)维数组 - 二维阵列可以被认为是多个1维阵列的组(或技术阵列)。类似地,该想法可以进一步扩展,即3维阵列是多个2维阵列的阵列,依此类推。

回到你的问题,因为雅各布已经发布了足够好的代码。

答案 1 :(得分:0)

你已经有办法进入阵列中的每个单元格来获得部门/季度的销售额,而你这样做可以总结数据。

a\b 1 2 3 4
1
2
3
4
5
6

如果你想加一行(除法),将所有b加起来为同一个a 如果你想加上一个col(Quarter)加起来同一个b的所有a。

获得第1分部

 a = 1
 for each b
 row += getarray[a][b];

答案 2 :(得分:0)

int row_total[DIVISION] = {0};  

for (int a=0; a < DIVISION; a++)
    {
        for (int b = 0; b< QUARTER; b++)
        {
            row_total[a] += getarray[a][b];
        }
    }

我不知道你要用这​​段代码实现什么。什么是data应该做的?此外,由于这是家庭作业,您可能仅限于使用数组而不是std::vector。我想,动态分配也是不可能的 - 或者情况并非如此?

答案 3 :(得分:0)

根据您对不理解数组的评论:

这是一种描绘数组的方法: 想象一排邮箱。每个邮箱都包含一段带有数字的邮件。要将每个号码相加,您需要打开每个邮箱,读取纸张上的数字,然后将其添加到正在运行的计数器中,让我们说明随身携带的剪贴板。访问完每个邮箱并在剪贴板上统计其总数后,剪贴板将包含邮箱的最终总和。邮箱行代表一维数组。剪贴板表示用于计算值的变量。

对于二维数组,让我们假设您有许多要访问的街道,每条街道都有相同数量的邮箱。为了统计每条街道,让我们在剪贴板上的每条街道上使用不同的纸张进行计数。 cliboard刚刚成为一系列带有标签的论文,而不仅仅是1,用于统计每条街道的邮箱总数。

关于编程的有趣之处在于,每天的例子完全符合编程思想。剪贴板上的那堆文件也可以被认为是论文的“堆栈”,你只能轻松地获得论文。如果您在堆中添加了一张纸,则将其放在底部而不是顶部,它就变成了“队列”。等等。