用面向对象的设计思路设计一个特殊运算符,实现两复数加减乘除,两矩阵加减乘
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用面向对象的设计思路设计一个特殊运算符,(1)可以实现复数的加、减、乘和除,(2)实现两个方阵的加法、减法和乘法。(3)用菜单方式选择所需的运算操作。
Complex.h
#include"iostream.h"
class complex
{
public:
complex(double r=0,double i=0):real(r),imag(i){}
complex operator+(complex &c2);
complex operator+(double d);
complex operator-(complex &c2);
friend complex operator+(double d,complex &c2);
friend complex operator*(complex &c1,complex &c2);
friend complex operator/(complex &c1,complex &c2);
friend ostream& operator<<(ostream &output,complex &c);
friend istream& operator>>(istream &input,complex &c);
private:
double real;
double imag;
};
Jz.h
#include"iostream.h"
const int m=2;
class jz
{
public:
jz();
jz(int b[m][m]);
void print();
friend jz operator+(jz &a1,jz &a2);
friend jz operator-(jz &a1,jz &a2);
friend jz operator*(jz &a1,jz &a2);
friend ostream& operator<<(ostream &output,jz &);
friend istream& operator>>(istream &input,jz &);
private:
int a[m][m];
};
Complex.cpp
#include"complex.h"
complex complex::operator+(complex &c2)
{
complex c;
c.real=this->real+c2.real;
c.imag=this->imag+c2.imag;
return c;
}
complex complex::operator-(complex &c2)
{
complex c;
c.real=this->real-c2.real;
c.imag=this->imag-c2.imag;
return c;
}
complex operator+(double d,complex &c1)
{
return complex(d+c1.real,c1.imag);
}
complex operator*(complex &c1,complex &c2)
{
return
complex(c1.real*c2.real+(-1)*c1.imag*c2.imag,c1.real*c2.imag+c2.real*c1.imag); }
complex operator/(complex &c1,complex &c2)
{
complex c;
double sum;
sum=c2.real*c2.real-c2.imag*c2.imag*(-1);
c.real=(c1.real*c2.real+c1.imag*(-c2.imag)*(-1))/sum;
c.imag=(c1.real*(-c2.imag)+c1.imag*c2.real)/sum;
return c;
}
ostream& operator<<(ostream &output,complex &c)
{
if(c.imag>=0)
output< else output< return output; istream& operator>>(istream &input,complex &c) { cout<<"输入实部:"< input>>c.real; cout<<"输入虚部:"< input>>c.imag; return input; } Jz.cpp #include"jz.h" jz::jz() { for(int i=0;i for(int j=0;j a[i][j]=0; } jz::jz(int b[m][m]) { for(int i=0;i for(int j=0;j a[i][j]=b[i][j]; } jz operator+(jz &a1,jz &a2) { jz c; for(int i=0;i for(int j=0;j c.a[i][j]=a1.a[i][j]+a2.a[i][j]; return c; } jz operator-(jz &a1,jz &a2) { jz c; for(int i=0;i for(int j=0;j c.a[i][j]=a1.a[i][j]-a2.a[i][j]; return c; } jz operator*(jz &a1,jz &a2) {