【问题标题】:Compute the sums of the rows and columns of a two dimensional array计算二维数组的行和列的总和
【发布时间】:2021-09-09 10:49:15
【问题描述】:

我试图得到一个二维数组的行列之和,但是结果是0。我不知道我的错误是什么。谢谢你的帮助。

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
    int characters[50][50],rc,sum=0,horizontal[10]={0},vertical[10]={0},c,r;
   
    cout<<"Please enter integer : ";
    cin>>rc;
    cout <<" The matrix is : \n";
   
    for(r=0;r<rc;r++){
        for( c=0;c<rc;c++){
            sum=sum+1;
            characters[r][c]=sum;
            cout<<characters[r][c]<< " ";
            horizontal[r]=horizontal[r]+characters[r][c];
            vertical[c]=vertical[c]+characters[c][r];
        }
           
        cout<< "The sum of horizontal is = " <<horizontal[r]<<" and The sum of vertical is "<<vertical[c];;
        cout<<endl;
   }
   
   return 0;
}

这是这段代码的结果

Please enter integer : 3

    The matrix is : 
    1 2 3 The sum of horizontal is = 6 and The sum of vertical is 0
    4 5 6 The sum of horizontal is = 15 and The sum of vertical is 0
    7 8 9 The sum of horizontal is = 24 and The sum of vertical is 0

【问题讨论】:

  • vertical[i]=vertical[i]+characters[c][r]; -> characters[c][r]; 未初始化使用。
  • &lt;&lt; vertical[i] &lt;&lt; 还是&lt;&lt;vertical[r]&lt;&lt;
  • 重新考虑您的解决方案:当您还没有查看所有行时,应该如何在每行中打印列的总和,嗯?

标签: c++ multidimensional-array


【解决方案1】:
  1. 您无法在填充矩阵之前计算垂直总和。

  2. vertical[c] = vertical[c] + characters[c][r] 错误。

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    int main()
    {
       int characters[50][50],rc,sum=0,horizontal[10]={0},vertical[10]={0},c,r;
    
       cout<<"Please enter integer : ";
       cin>>rc;
       cout <<" The matrix is : \n";
    
       for(r=0;r<rc;r++){
    
        for( c=0;c<rc;c++){
          sum=sum+1;
          characters[r][c]=sum;
          cout<<characters[r][c]<< " ";
       }
       cout << endl;
    }
    
    for(r=0;r<rc;r++){
    
       for( c=0;c<rc;c++){
          horizontal[r]=horizontal[r]+characters[r][c];
          vertical[r] = vertical[r] + characters[c][r];
    
           }
    
           cout<< "The sum of horizontal is = " <<horizontal[r]<<" and The sum of vertical is "<<vertical[r];
           cout<<endl;
    
    }
    
    return 0;
    }
    

【讨论】:

  • 他会计算。它不会最终计算出来,但他可以,请在下面查看我的解决方案。唯一的问题是只有在循环结束时才能打印结果。
【解决方案2】:

您的矩阵是按行创建的。所以当r=0c=1

vertical[c]=vertical[c]+characters[c][r]; 正在尝试添加尚未创建的第二行的第一个元素。

试试这个

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;

int main()
{
   int characters[3][3],rc,sum=0,horizontal[3]={0},vertical[3]={0},c,r;
   
   cout<<"Please enter integer : ";
   cin>>rc;
    cout <<" The matrix is :\n";
    for ( r=0; r<rc; r++){
        for (c=0; c<rc; c++){
            sum=sum+1;
            characters[r][c]=sum;
            cout<<characters[r][c]<<" ";
            horizontal[r]=horizontal[r]+characters[r][c];;
        }
        cout<< "The sum of horizontal is = " <<horizontal[r];
        cout<<"\n";
    }
    for ( c=0; c<rc; c++){
        for (r=0; r<rc; r++){
            vertical[c] = vertical[c] + characters[r][c];
        }
        cout<<" and The sum of vertical is "<<vertical[c];
        cout<<"\n";
    }
           
        cout<<endl;
        getchar();
   
   return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    相关资源
    最近更新 更多