C++初学初练数学指针与字符串之矩阵初练

来源:互联网 发布:js 过滤换行符 编辑:程序博客网 时间:2024/06/11 10:04

#include <iostream>#include <string>#include <cmath>using namespace std;class Matrix{public:Matrix(int,int);~Matrix();Matrix(const Matrix &m);int getLines(){return lines;}int getRows(){return rows;}void cinMatrix();void coutMatrix();friend void plusMatrix(Matrix &a,Matrix &b,Matrix &c);friend void subMatrix(Matrix &a,Matrix &b,Matrix &c);private:int lines;int rows;int *p;};Matrix::Matrix(int Lines,int Rows):lines(Lines),rows(Rows){p=new int[lines*rows];}Matrix::Matrix(const Matrix &m){lines=m.lines;rows=m.rows;p=new int[lines*rows];    for(int i=0;i<lines;i++){for(int j=0;j<rows;j++){p[i*rows+j]=m.p[i*rows+j];}}}Matrix::~Matrix(){delete p;}void Matrix::cinMatrix(){for(int i=0;i<lines;i++){for(int j=0;j<rows;j++){cout<<"请输入矩阵第"<<i+1<<"行第"<<j+1<<"列元素:";cin>>p[i*rows+j];}}}void Matrix::coutMatrix(){for(int i=0;i<lines;i++){for(int j=0;j<rows;j++){cout<<p[i*rows+j]<<"";}cout<<endl;}}void plusMatrix(Matrix &a,Matrix &b,Matrix &c){if(a.getLines()!=b.getLines()){cout<<"矩阵不相容,不可进行矩阵加法运算"<<endl;exit(0);}else if(a.getRows()!=b.getRows()){cout<<"矩阵不相容,不可进行矩阵减法运算"<<endl;exit(0);}else{for(int i=0;i<a.getLines();i++)    {for(int j=0;j<a.getLines();j++){c.p[i*a.getRows()+j]=a.p[i*a.getRows()+j]+b.p[i*a.getRows()+j];}}}} void subMatrix(Matrix &a,Matrix &b,Matrix &c){if(a.getLines()!=b.getLines()){cout<<"矩阵不相容,不可进行矩阵加法运算"<<endl;exit(0);}else if(a.getRows()!=b.getRows()){cout<<"矩阵不相容,不可进行矩阵减法运算"<<endl;exit(0);}else{//Matrix m(a);for(int i=0;i<a.getLines();i++)    {for(int j=0;j<a.getLines();j++){c.p[i*a.getRows()+j]=a.p[i*a.getRows()+j]-b.p[i*a.getRows()+j];}}}}int main(){Matrix A1(4,3),A2(4,3),A3(4,3);A1.cinMatrix();cout<<endl;A2.cinMatrix();cout<<endl;A1.coutMatrix();cout<<endl;A2.coutMatrix();cout<<endl;A3.cinMatrix();plusMatrix(A1,A2,A3);A3.coutMatrix();Matrix *m=new Matrix(3,4);m[0].cinMatrix();m[1].cinMatrix();plusMatrix(m[0],m[1],m[2]);m[2].coutMatrix();delete []m;return 0;}

这是一次上机实验课内容,题目是:

 用类来实现矩阵,定义一个矩阵的类,属性包括:

矩阵大小,用 lines, rows(行、列来表示);

存贮矩阵的数组指针,根据矩阵大小动态申请(new)。

矩阵类的方法包括:

构造函数:参数是矩阵大小,需要动态申请存贮矩阵的数组;

析构函数:需要释放矩阵的数组指针;

拷贝构造函数:需要申请和复制数组(深复制);

输入函数:可以从cin 中输入矩阵元素;

输出函数:将矩阵格式化输出到cout;

矩阵相加函数:实现两个矩阵相加的功能,结果保存在另一个矩阵里,但必须矩阵

大小相同;

矩阵相减的函数:实现两个矩阵相减的功能,结果保存在另一个矩阵里,但必须矩

阵大小相同。

主函数功能:

定义三个矩阵:A1、A2、A3;

初始化 A1、A2;

计算并输出 A3 = A1+A2,A3=A1+A2;

用 new 动态创建三个矩阵类的对象:pA1、pA1、pA3;

初始化 pA1、pA2;

计算并输出 pA3=pA1+pA2,pA3=pA1+pA2;

释放 pA1、pA1、pA3。


ps:代码初练,错误请指出,求赐教,
0 0
原创粉丝点击