我找不到我的代码出了什么问题?它没有做加法

时间:2019-06-29 05:00:11

标签: c++ matrix addition

看看怎么了?当我调试并运行代码时,它没有显示任何错误,但是在运行代码时,它不执行加法命令。 单击此链接https://code.sololearn.com/cjji38CaEHBd以查看完整的代码并进行编辑。以下代码用于添加矩阵,我对此表示怀疑。正确吗?

int Matrix::add()
{
  Matrix s1;
  int i, j=0;
  s1.getmatrix();
  cout << "Addition of Matrix A & B is";
  for (i = 0; i < r; i++)
  {
    for (j = 0; j < c; j++)
    {
        C[i][j] = A[i][j] + B[i][j];
    }
    cout << "\n";
  }
  for (i = 0; i < r; i++)
  {
    for (j = 0; j < c; j++)
    {
        cout <<" "<<C[i][j];
    }
  }
  return 0;
}

2 个答案:

答案 0 :(得分:1)

该程序的设计相当混乱,但是我终于能够在以下输入中使用它:

5
2 2
1 2 3 4
1 2 3 4

确保您了解类实例的概念。主要问题在于,您在Matrix s1方法中声明了main(),调用了s1.add(),然后在实现Matrix::add()的过程中,创建了另一个Matrix s1并然后尝试从s1引用原始的main(),在这里您要检索rcA和{{1 }}。简便的解决方法是将B中对rcAB的引用替换为Matrix::add(),{{ 1}},s1.rs1.c-没有。表示法,您将隐式获得s1.As1.Bthis->rthis->c,它们不会通过调用this->A来初始化。

为避免将来出现此类混乱,我可能会设计您的程序,以使您无条件获取一些输入矩阵this->BMatrix::getmatrix(),然后在A中添加THOSE,返回结果矩阵(B)而不创建新实例。同样,将变量命名为不同的东西可能会使此错误更容易找到-在Matrix::add()中的int[][]以及指向不同对象的Matrix s1都相当混乱。

我为修复程序修改了尽可能少的代码。最终的实现是这样的:

main()

tl; dr这是一个可能的修复程序,但并未解决该程序中心的严重设计问题的核心。

希望这会有所帮助!

答案 1 :(得分:0)

您不能直接使用A,B,C,r,c变量。它们是类变量,必须与矩阵s1一起使用。

int Matrix::add() 
{ 
   Matrix s1; 
   int i, j=0; 
   s1.getmatrix(); 
   cout << "Addition of Matrix A & B is"; 
   for (i = 0; i < s1.r; i++) 
   { 
      for (j = 0; j < s1.c; j++) 
      { 
          s1.C[i][j] = s1.A[i][j] + s1.B[i][j]; 
      }
      cout << "\n"; 
   } 
   for (i = 0; i < s1.r; i++) 
    { 
        for (j = 0; j < s1.c; j++)
        { 
             cout <<" "<<s1.C[i][j];
        } 
    } 
    return 0; 
 }