用c ++求和2D数组列

时间:2017-10-11 19:09:11

标签: c++ arrays

我想总结一个预定义的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;
{

4 个答案:

答案 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;
}