C++小白第一次写的一个用于复数运算程序

疫情期间在家上网课,写作业没带计算器。电类专业的同学对这个需求还是很大的。

#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值