我正在学习数组(至少可以说是C ++的新手)并且我正在尝试执行以下操作:
我的代码是:
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
const int M = 12;
const int N = 12;
int myArray[M + 1][N] = { 0 };
void generateArray();
void sumRowsAndColumns();
void printSumRowsAndColumns();
int _tmain(int argc, _TCHAR* argv[])
{
generateArray();
sumRowsAndColumns();
return 0;
}
void generateArray()
{
// set the seed
unsigned setSeed = 1023;
srand(setSeed);
// generate the matrix using pseudo-random numbers
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
myArray[i][j] = rand() % 100;
// outputs the raw matrix (in case we need to see it)
// cout << left << setw(4) << myArray[i][j] << " ";
}
// cout << endl;
}
// cout << endl << endl;
}
void sumRowsAndColumns()
{
cout << endl;
// for the columns
for (int i = 0; i < M; i++)
{
for (int j = 0; j < M; ++j)
myArray[M][j] += myArray[i][j];
}
printSumRowsAndColumns();
}
void printSumRowsAndColumns()
{
// for the columns
for (int i = 0; i < M + 1; i++)
{
for (int j = 0; j < N; j++)
{
cout << left << setw(6) << myArray[i][j];
}
cout << endl;
}
}
除了上面的#3,我能做到。我已经尝试过(非常不成功!)包含一些for循环来处理行元素的总和,但似乎无法让它运行(并且有时会导致无限循环)。是否有人能够就如何解决这个问题给我一些指导?
提前致谢。 莱恩
P.S。我知道向量是这里的方法,但从技术上讲我们还没有了解它们,所以期望我们使用数组。
*更新*
我根据下面的建议调整了sumRowsAndColumns()函数,我看到了列总和的预期结果。但是,当我尝试总结列时,我看到了一个错误。新代码是:
void sumRowsAndColumns()
{
cout << endl;
for (int i = 0; i < M; i++)
{
for (int j = 0; j < M; ++j)
{
rowSum[i] += myArray[i][j];
colSum[j] += myArray[i][j];
}
cout << left << setw(6) << rowSum[i] << endl;
// cout << left << setw(6) << colSum[j] << endl;
}
}
注释掉的那一行:
// cout << left << setw(6) << colSum[j] << endl;
导致错误(“j”:未声明的标识符)。我认为'j'和'我'一样。我在for循环中的错误位置是否有这行代码?提前谢谢。
答案 0 :(得分:0)
不确定为什么要制作13x12阵列。如果要将行和和列总和存储在同一个数组中,则需要13x13。我建议你把它设为12x12并制作两个12x1数组来保存总和。
int col_sum [M],row_sum [M];
并将它们初始化为零。
然后你的循环看起来像这样:
for (int i = 0; i < M; i++)
{
for (int j = 0; j < M; ++j)
{
row_sum[i] += myArray[i][j];
col_sum[j] += myArray[i][j];
}
}
如果它必须全部在一个数组中,您应该能够以13x13的形式进行处理。 row_sum数组是第13列,col_sum是第13行。我个人认为在这样的数组中混合数据并不是一个好主意 - 12x12用于随机数据,12x1数组用于结果。
如果你遇到困难,只需将它绘制在一张较小阵列的纸上,然后用它来理解循环如何穿过阵列。