定义一个矩阵类Matrix,其数据成员为:"int*p,rows,cols;",用于存放二维数组值。要求将二维数组存放成一维数组,rows和cols表示二维数组的行数和列数,p指向数组第一个元素。要求编写以下几个公有成员丽数。●Matrix(int r,int c):构造函数,初始化数组的行数和列数,并动态为数组申请空间。30习题●Matrix(Matrix&b):拷贝构造丽数。·void input0):输人数组值。·Matrix operator+(Matrix&b):重载加法运算符“+”,实现两个矩阵相加。void operator=(Matrix&b):重载赋值运算符“=”,实现两个矩阵赋值。void show):按二维方式输出a数组。~Matrix0:析构函数,释放数组空间。在主函数中完成对该类的测试。首先输入矩阵的行数和列数的值,然后根据需要构造矩阵类对象,输入矩阵全体元素,完成对上述矩阵类成员#数的测试。例如三个矩阵分别是A、B、C,在完成了A和B矩阵元素的输入或赋值后,计算C=A+B。请自行设计测试流程和测试用例(即测试用数据)。
时间: 2024-02-17 17:03:22 浏览: 71
好的,我已经理解了你的问题。下面是 Matrix 类的实现代码:
```c++
#include<iostream>
using namespace std;
class Matrix{
private:
int *p;
int rows, cols;
public:
Matrix(int r, int c): rows(r), cols(c){
p = new int[rows * cols];
}
Matrix(Matrix& b): rows(b.rows), cols(b.cols){
p = new int[rows * cols];
for(int i=0; i<rows*cols; i++){
p[i] = b.p[i];
}
}
void input(){
for(int i=0; i<rows; i++){
for(int j=0; j<cols; j++){
cin >> p[i*cols+j];
}
}
}
Matrix operator+(Matrix& b){
Matrix c(rows, cols);
for(int i=0; i<rows*cols; i++){
c.p[i] = p[i] + b.p[i];
}
return c;
}
void operator=(Matrix& b){
rows = b.rows;
cols = b.cols;
p = new int[rows * cols];
for(int i=0; i<rows*cols; i++){
p[i] = b.p[i];
}
}
void show(){
for(int i=0; i<rows; i++){
for(int j=0; j<cols; j++){
cout << p[i*cols+j] << " ";
}
cout << endl;
}
}
~Matrix(){
delete [] p;
}
};
int main(){
int m, n;
cout << "请输入矩阵的行数和列数:";
cin >> m >> n;
Matrix a(m, n), b(m, n), c(m, n);
cout << "请输入矩阵A:";
a.input();
cout << "请输入矩阵B:";
b.input();
c = a + b;
cout << "矩阵A:" << endl;
a.show();
cout << "矩阵B:" << endl;
b.show();
cout << "矩阵C=A+B:" << endl;
c.show();
return 0;
}
```
测试用例:
输入:
```
请输入矩阵的行数和列数:3 3
请输入矩阵A:1 2 3 4 5 6 7 8 9
请输入矩阵B:9 8 7 6 5 4 3 2 1
```
输出:
```
矩阵A:
1 2 3
4 5 6
7 8 9
矩阵B:
9 8 7
6 5 4
3 2 1
矩阵C=A+B:
10 10 10
10 10 10
10 10 10
```
阅读全文