疫情期间在家上网课,写作业没带计算器。电类专业的同学对这个需求还是很大的。
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
const double c=3.141592653;//c++里面三角函数都是用的弧度,用于转化
class complex{
private:
double real;
double image;
public:
complex operator+(complex);
complex operator-(complex);
complex operator*(complex);
complex operator/(complex);
void print();
complex(double r,double i);
complex(complex & c);
};
//类的定义
complex::complex(double r,double i){
real=r;
image=i;
}
complex::complex(complex&c){
real=c.real;
image=c.image;
}
complex complex::operator+(complex c){
complex temp(real+c.real,image+c.image);
return temp;
}
complex complex::operator-(complex c){
complex temp(real-c.real,image-c.image);
return temp;
}
complex complex::operator*(complex c){
complex temp(real*c.real-image*c.image,real*c.image+c.real*image);
return temp;
}
complex complex::operator/(complex c){
double d=c.real*c.real+c.image*c.image;
complex temp((real*c.real+image*c.image)/d,(c.image*real-c.real*image)/d);
return temp;
}
void complex::print(){
double a,b;
a=sqrt(real*real+image*image);
b=acos(real/a);
b=b*360/(2*c);
cout<<"角度形式为:"<<a<<"<"<<b<<endl;
cout<<"表达式形式:"<<real<<"+"<<image<<"i"<<endl;
}
//一系列函数声明
//下面是主函数
int main(){
do{
cout<<"请选择操作数1和操作数2的形式:"<<endl;
cout<<"1.角度形式与角度形式"<<endl;
cout<<"2.角度形式与表达式形式"<<endl;
cout<<"3.表达式形式与角度形式"<<endl;
cout<<"4.表达式形式与表达式形式"<<endl;
int i;
cin>>i;
if(i==1){
cout<<"请依次输入复数1和复数2的模值和辐角"<<endl;
double a1,a2,a3,a4,b1,b2,b3,b4;
char e;
cin>>a1>>a2>>a3>>a4;
b1=a1*cos(a2*2*c/360);
b2=a1*sin(a2*2*c/360);
b3=a3*cos(a4*2*c/360);
b4=a3*sin(a4*2*c/360);
complex c1(b1,b2),c2(b3,b4);
cout<<"请输入操作符"<<endl;
cin>>e;
switch(e){
case '+':(c1+c2).print();break;
case '-':(c1-c2).print();break;
case '*':(c1*c2).print();break;
case '/':(c1/c2).print();break;
default:cout<<"请输入正确操作符";
}
}
if(i==2){
cout<<"请依次输入复数1的模值和辐角和复数2的实部与虚部"<<endl;
double a1,a2,a3,a4,b1,b2;
char e;
cin>>a1>>a2>>a3>>a4;
b1=a1*cos(a2*2*c/360);
b2=a1*sin(a2*2*c/360);
complex c1(b1,b2),c2(a3,a4);
cout<<"请输入操作符"<<endl;
cin>>e;
switch(e){
case '+':(c1+c2).print();break;
case '-':(c1-c2).print();break;
case '*':(c1*c2).print();break;
case '/':(c1/c2).print();break;
default:cout<<"请输入正确操作符";
}
}
if(i==3){
cout<<"请依次输入复数1的实部与虚部和复数2的模值和辐角"<<endl;
double a1,a2,a3,a4,b1,b2;
char e;
cin>>a1>>a2>>a3>>a4;
b1=a3*cos(a4*2*c/360);
b2=a3*sin(a4*2*c/3606);
complex c1(a1,a2),c2(b1,b2);
cout<<"请输入操作符"<<endl;
cin>>e;
switch(e){
case '+':(c1+c2).print();break;
case '-':(c1-c2).print();break;
case '*':(c1*c2).print();break;
case '/':(c1/c2).print();break;
default:cout<<"请输入正确操作符";
}
}
if(i==4){
cout<<"请依次输入复数1和复数2的实部与虚部"<<endl;
double a1,a2,a3,a4;
char e;
cin>>a1>>a2>>a3>>a4;
complex c1(a1,a2),c2(a3,a4);
cout<<"请输入操作符"<<endl;
cin>>e;
switch(e){
case '+':(c1+c2).print();break;
case '-':(c1-c2).print();break;
case '*':(c1*c2).print();break;
case '/':(c1/c2).print();break;
default:cout<<"请输入正确操作符";
}
}
system("pause");
}while (1);
return 0;
}