在这里,我编写了一个C ++代码,它使用二维数组,意味着执行rowsum但它没有提供适当的输出

时间:2018-01-24 09:48:08

标签: c++

# include<iostream>
using namespace std;
int const rows=3;    //rows are kept constant
int const cols=3;    //columns are kept constant

void display(int arr[][cols],int rows,int cols);    //function prototype
int rowsum(int arr[][cols],int rows,int cols);    //function prototype


int main()
{

    int z [rows][cols];    //2-D array declaration
    int r,c;

        for(r=0;r<rows;r++)
        {
            for(c=0;c<cols;c++)
            {
             cout<<"Enter elements of array["<<r<<"]["<<c<<"]:";
             cin>>z[r][c];
            }
        }
          display(z,rows,cols);    //Function call
          rowsum(z,rows,cols);    //Function call

        return 0;

}
void display(int arr[][cols],int rows,int cols)    //function to display input
{
    int r,c;
    for(r=0;r<rows;r++)
    {
     for(c=0;c<cols;c++)
      {
       cout<<"Elements of array["<<r<<"]["<<c<<"]="<<arr[r][c]<<endl;

      }
    }

}
int rowsum(int arr[][cols],int rows,int cols)    //Function to perform rowsum
{
    int c,sum=0,r=0;
    for(c=0;c<cols;c++)
    {
        sum=sum+arr[r][c];
        cout<<"the sum of rows is:"<<sum<<endl;
    }
    return sum;
}

上面是一个使用二维数组的C ++代码。它接受用户的输入,并使用显示功能显示输入。接受输入后我想要对行进行求和,为此我编写了一个名为rowsum的函数但它没有正常工作。它没有提供所需的输出。

2 个答案:

答案 0 :(得分:1)

那是因为你打印出第一行的部分总和。

你应该有两个循环,一个用于行,一个用于列,只有在循环遍历所有列后才打印出结果。

或者,如果您只想要设置行的总和,至少将print语句移出循环,这样您才能获得最终总和,而不是中间结果。

答案 1 :(得分:1)

您的代码的问题在于您在此处使用了单个循环而不是所需的两个for循环。因此,您的代码所做的只是计算第0行的总和(从r=0开始)。

您实际需要做的是计算一行的总和(即for(c=0;c<cols;c++)),row次。 HTH !!

for(r=0;r<rows;r++)
{
    sum = 0;
    for(c=0;c<cols;c++) //calculates sum of rth row
    {
        sum += arr[r][c];
    }
    cout<<"Sum of row " << i <<" is " << sum ;
}