我必须总结两个矩阵(tridiagonal),一切正常,但我不知道如何在main中调用函数和。我试过了,但它报告错误。任何帮助或建议将不胜感激。
·H:
class matrix
{
public:
matrix();
~matrix();
matrix(int i, int j);
void insert();
void iz();
void sum(matrix m1, matrix m2);
private:
int i;
int j;
vector<vector<int> > v;
};
的.cpp
matrix::matrix()
{
}
matrix::matrix()
{
}
matrix::matrix(int i, int j){
v.resize(i);
for (int k = 0; k < i; k++)
v[k].resize(j);
this->i = i;
this->j = j;
}
void matrix::insert()
{
int x;
for (int a = 0; a < i; a++){
for (int b = 0; b < j; b++){
if (abs(a-b) <= 1){
x = rand() % 100+1;
v[a][b] = x;
}
else
v[a][b] = 0;
}
}
}
void matrix::iz()
{
for (int a = 0; a < i; a++){
for (int b = 0; b < j; b++)
cout << v[a][b] << " ";
cout << endl;
}
}
void matrix::sum(matrix m1, matrix m2)
{
matrix m3;
int c = m1.i;
int d = m1.j;
if (m1.i == m2.i && m1.j == m2.j)
{
for (int a = 0; a < c; a++)
{
for (int b = 0; b < d; b++){
m3.v[a][b] = m1.v[a][b] + m2.v[a][b];
}
cout << endl;
}
}
else
cout << "Error" << endl;
}
主
matrix m1(6, 6);
m1.insert();
m1.iz();
cout << endl << endl;
matrix m2(6, 6);
m2.insert();
m2.iz();
问题在于:
/*
matrix m3;
m3.sum(m1, m2);
m3.iz();
*/
cin.ignore();
cin.get();
return 0;
答案 0 :(得分:1)
问题在于sum函数,你可以在其中创建一个新的对象矩阵m3,并在该对象上添加,而不是这个。
执行:this->v[a][b] = m1.v[a][b] + m2.v[a][b];
代替:m3.v[a][b] = m1.v[a][b] + m2.v[a][b];
此外,您需要将this->i
和this->j
变量设置为m1.i
和m1.j
,此外您还应该调整this->v
的所有大小调整