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。
0 0
- C++初学初练数学指针与字符串之矩阵初练
- 【C语言天天练(六)】指针
- PHP初学乍练
- 初学乍练WPF
- Activity初学乍练
- 【C语言天天练(八)】字符串
- 我的“初练”
- 贪心算法初练
- 贪心初练
- 二分初练
- 指针小练
- 字符串反序再练
- 【周练】 数学水题
- 【C语言天天练(十一)】深入理解指针
- 初入USACO小练
- Javacc词法分析初练
- C练题网站
- c语言小练
- 关于DatePickerDialog点击返回键取消调用回调方法onDateSet()的解
- CRF-条件随机场
- 冯东阳:解读纯文本链接到底算不算外链
- ajax发送json,后台取得数据
- 索引原理(2)
- C++初学初练数学指针与字符串之矩阵初练
- [详解]TCP三次握手,四次分手
- Mysql学习笔记之一
- 北京实习总结
- ZOJ 3582 Back to the Past (概率dp)
- codeblocks (13.12)配置有效
- c语言 结构体
- 第七周.循环大战
- 黑马程序员-去除ArrayList集合中的重复元素学习日记