C ++中的多态加法

时间:2012-03-21 05:57:31

标签: c++ arrays math data-structures

我正在尝试创建一个程序,添加一个以行和列组织的多态数字,所以希望如果你看看我创建的数组,你会知道我想要做什么,但是可以这样想,你有3个数组ABC,我正在尝试计算A+B=C

但除了愚蠢之外我什么也得不到,我需要帮助,因为我对数据结构知之甚少:

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
   int i,j,A[10][10],B[10][10],C[10][10], nf, nc;
   cout<<"#Rows: "<<endl;
   cin>>nf;
   cout<<"#Columns: "<<endl;
   cin>>nc;


   //For the A part
   for(int i=0; i<=nf;i++){
      cout<<"Enter the row Number  # "<<i;
      for(int j= 0; j<=nc;j++){
         cout<<"Enter Column Column#"<<j<<endl;;  
         cin>>A[i][j];
   }}

   //For the B part     
   for(int i=0; i<=nf;i++){
      cout<<"Enter Row # "<<i<<endl;

      for(int j= 0; j<=nc;j++){
         cout<<"Enter Column# "<<j<<endl;  
         cin>>B[i][j];
   }}


   //Calculation              
   for(int i=0; i<nf;i++)
      for(int j=0;j<nc;j++)
         C[i][j]= A[i][j]+ B[i][j];  


   //output     
   for(int i=0; i<nf;i++)
      for(int j=0;j<nc;j++)
          cout<<C[i][j];  

   system("PAUSE");
   return EXIT_SUCCESS;
}

4 个答案:

答案 0 :(得分:0)

您必须将单元格初始化为0.否则它们将包含垃圾值,并将用于添加。您可以通过初始化或使用循环来完成。

int main()
{
int nf, nc, A[10][10]={0}, B[10][10]={0}, C[10][10]={0};


}

你有未使用的变量i和j。它们不是错误输出的原因,但仍然避免它。

您可以找到程序的简化更正形式here(阵列边界也已更正)

 for(int i=0; i<nf;i++)    
    for(int j= 0; j<nc;j++)

这些循环用于输入和输出

答案 1 :(得分:0)

你输入循环的界限我认为不是你想要它或至少它与计算循环不一致

for(int j= 0; j<=nc;j++)  vs  for(int j= 0; j<nc;j++)

答案 2 :(得分:0)

我希望这是你的回应:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
int i,j,A[10][10],B[10][10],C[10][10], nr, nc;
cout<<"#Rows: "<<endl;
cin>>nr;
cout<<"#Columns: "<<endl;
cin>>nc;


//For the A part
for(int i=0; i<nr;i++){
    for(int j= 0; j<nc;j++){
        cout<<"Enter the A["<<i<<"]["<<j<<"]"<<endl;
        cin>>A[i][j];
    }
}

//For the B part     
for(int i=0; i<nr;i++){
    for(int j= 0; j<nc;j++){
        cout<<"Enter the B["<<i<<"]["<<j<<"]"<<endl;
        cin>>B[i][j];
    }
}


//Calculation              
for(int i=0; i<nr;i++)
    for(int j=0;j<nc;j++)
        C[i][j]= A[i][j]+ B[i][j];


//output     
for(int i=0; i<nr;i++)
    for(int j=0;j<nc;j++)
        cout<<C[i][j];

system("PAUSE");
return EXIT_SUCCESS;
}

答案 3 :(得分:0)

不要用许多cout语句使事情复杂化。

cout<<"Enter a["<<i<<"]"<<"["<<j<<"] : ";
cin>>a[i][j];

i = 0nf表示您正在阅读nf+1元素。因此有阵列出界。请注意i<nfi<=nf