Palsur
2021-09-17 23:56
采纳率: 57.1%
浏览 55

C++实现矩阵类,函数参数float实在不会

C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。本次类实现一个矩阵类,基本定义如下:

class RMatrix
{
private:
      int rw;  //矩阵行数目
      int rc;  //矩阵列数目
      float *elmSet; //矩阵元素集合,其中 elmSet[i*rc+j]代表第i行,第j列的元素值
public:
    RMatrix();  //构造函数,令rw=0,rc=0,elmSet=0
    RMatrix(int row, int col);  //构造函数,令rw=row,rc=col,elmSet=new float[row*col] 元素值全为0
    ~RMatrix(); //析构函数,如果elmSet!=0,则delete [] elmSet
    float GetElem(int i, int j); //得到矩阵的元素值
void SetElem(int i, int j, float value); //设定矩阵的元素值,
int GetRow(); //得到矩阵的行数目,
int GetCol(); //得到矩阵的列数目,
void AugumentMatrix(); //对当前矩阵进行增广操作(即在右侧增加一列,该列的值全为0)
}

要求:
1) 初始化一个3*3的矩阵,并初始化其对角线上的值为1,其他值为0
2) 打印输出该矩阵来验证初始化结果是否准确
3) 调用AugumentMatrix,再打印输出该矩阵来验证初始化结果是否准确

RMatrix :: RMatrix(){rw=0;rc=0;elmSet=0;}
RMatrix :: RMatrix(int row, int col){rw=row;rc=col;elmSet=new float[row*col];}
RMatrix :: ~RMatrix(){
    for(int i=0;i<=rw*rc;++i){
        if(elmSet!=0){
            delete [] elmSet;
        }
    }
}
float RMatrix :: GetElem(int i, int j){
    for(int m=1;m<=i;++m){
        for(int n=1;n<=j;++n){
            cout<<elmSet[m*i+n];
            if(n==j) cout<<endl;
        }
    }
}
void RMatrix :: SetElem(int i, int j, float value){
    for(int m=1;m<=i;++m){
        for(int n=1;n<=j;++n){
            if(m==n) elmSet[m*i+n]=value;
        }
    }
}
int RMatrix :: GetRow(){
    int row;
    row=rw;
    return row;
}
int RMatrix :: GetCol(){
    int col;
    col=rc;
    return col;
}
int main(){
    int rw=3;
    int rc=3;
    float value=1.0f;
    RMatrix(); 
    RMatrix(rw, rc);    
    SetElem(rw, rc,**value**); 
    GetElem(rw, rc); 
}

显示SetElem 和GetElem was not declared in this scope,想问一下这个该怎么调整。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题