我想总结一个预定义的2D数组的列,但我的代码似乎不起作用。 E. g。对于具有行2 3和4 5的2D阵列 我得到以下列总和: -117393687和-113194156
以下是我的代码中我总结列的部分:
//sum columns
for(i=0; i<m; i++)
{
for(ii=0; ii<m; ii++)
{
sum += myarray[i][ii];
}
cout <<"column sum: "<<sum<<endl;
{
我的其余代码:
#include <iostream>
using namespace std;
int main()
{
int i, ii, n, m, sum;
int array[n][m];
sum=0;
cout <"no. of rows"<<endl;
cin>>n;
cout <"no. of columns"<<endl;
cin>>m;
for(i=0; i<n; i++)
{
for(ii=0; ii<n; ii++)
{
cout<<"row "<<i+1<<" column "<<ii+1<<endl;
cin>>array[n][m];
}
}
}
//sum columns
for(i=0; i<m; i++)
{
for(ii=0; ii<m; ii++)
{
sum += myarray[i][ii];
}
cout <<"column sum: "<<sum<<endl;
{
答案 0 :(得分:0)
您没有正确声明阵列大小。创建数组时,n和m尚未设置。您需要先确定它们的大小。即使这样,你也必须将常量传递给数组,因为C ++中的数组不能动态调整大小。如果您希望用户确定像这样的容器大小,那么使用向量向量。当您从程序开头知道大小时,将使用数组。
答案 1 :(得分:0)
根据上面显示的代码: 你在服用iput时犯了错误。试试这个:
for(i=0; i<n; i++)
{
for(ii=0; ii<n; ii++)
{
cout<<"row "<<i+1<<" column "<<ii+1<<endl;
cin>>array[i][ii];
}
}
答案 2 :(得分:0)
您的代码存在相当多的错误,并且它具有相当奇怪的结构,但是尝试不要将其更改太多(因此您仍然可以轻松地遵循修复程序),让“#”;我看到它已修好然后我会解释它(请注意这个版本将在实践中编译并运行):
#include <iostream>
using namespace std;
int main()
{
int i, ii, n, m, sum;
cout << "no. of rows" << endl;
cin >> n;
cout << "no. of columns" << endl;
cin >> m;
int array[n][m];
for (i=0; i<n; i++)
{
for (ii=0; ii<m; ii++)
{
cout << "row " << i+1 << " column " << ii+1 << endl;
cin >> array[i][ii];
}
}
sum=0;
for (i=0; i<n; i++)
{
for (ii=0; ii<m; ii++)
{
sum += array[i][ii];
}
}
cout << "Sum: " << sum << endl;
}
好的,首先,你应该只在之后声明数组你知道&#34; n&#34;和&#34; m&#34;变量是。编辑:此外,并非所有编译器都会接受以这种方式声明动态数组,但同样,我试图尽可能保持原始结构。
其次,在你的输入循环中,你应该通过&#34; i&#34;来索引数组。和&#34; ii&#34;,但你总是按&#34; n&#34;进行索引。和&#34; m&#34;,即只写入最新的索引,这甚至会导致异常。
最后,在总结时,你应该再次使用&#34; i&#34;和&#34; ii&#34;作为数组索引,所以你正确扫描数组。
就是这样。
答案 3 :(得分:0)
您正在以错误的方式初始化2D数组,您需要先定义大小,在声明数组时m和n不会被初始化。
在C ++上使用像vector这样的容器更好。
输入代码中也有错误(2 n而不是for循环中的n和m)。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int rows, cols, sum = 0;
std::vector<std::vector<int>> array;
cout << "No. of rows: ";
cin >> rows;
cout << "No. of columns: ";
cin >> cols;
for(int i = 0; i< rows; i++)
{
std::vector<int> v;
for(int j = 0; j < cols; j++)
{
cout << "Value for row " << i + 1 << " and column "<< j + 1 << ": ";
int val;
cin >> val;
v.push_back(val);
}
array.push_back(v);
}
for (auto i: array)
{
for(auto j: i)
{
sum += j;
}
}
cout << "The sum is: " << sum << endl;
}