用类实现的简单复数计算器
废话少说,直接上代码
#include <iostream>
#include <math.h>
#define PI acos(-1)
using namespace std;
class complex
{
friend complex operator +(complex c1, complex c2);
friend complex operator -(complex c1, complex c2);
friend complex operator *(complex c1, complex c2);
friend complex operator /(complex c1, complex c2);
friend ostream& operator <<(ostream&, complex& c);
public:
complex() = default;
complex(double i1, double i2) :real(i1), imag(i2) {};
complex(double i4, double i5, int i3) :mould(i4), angle(i5), flag(i3) {};
void display(complex c);
void conversion1(complex& c);
void conversion2(complex& c);
private:
double real;
double imag;
double mould;
double angle;
int flag;
};
complex operator +(complex c1, complex c2)
{
return complex(c1.real+c2.real,c1.imag+c2.imag);
}
complex operator -(complex c1, complex c2)
{
return complex(c1.real - c2.real, c1.imag - c2.imag);
}
complex operator *(complex c1, complex c2)
{
return complex(c1.real * c2.real-c1.imag*c2.imag, c1.real * c2.imag + c1.imag * c2.real);
}
complex operator /(complex c1, complex c2)
{
return complex((c1.real * c2.real + c1.imag * c2.imag)/(c2.real*c2.real+c2.imag*c2.imag),
(c2.real * c1.imag - c1.real * c2.imag) / (c2.real * c2.real + c2.imag + c2.imag));
}
ostream& operator <<(ostream& opt, complex& c)
{
if (c.imag >= 0) {
opt << "(" << c.real << "+" << c.imag << "i)" << endl;
}
if(c.imag<0){
opt << "(" << c.real << "-" << -c.imag << "i)" << endl;
}
return opt;
}
void complex::display(complex c)
{
cout << c.mould << "∠" << c.angle<<"°" << endl;
}
void complex::conversion1(complex& c)
{
c.mould = sqrt(c.real * c.real + c.imag * c.imag);
c.angle = atan(c.imag/ c.real)*180/PI;
}
void complex::conversion2(complex& c)
{
c.real = c.mould * cos(c.angle * PI /180);
c.imag = c.mould * sin(c.angle * PI /180);
}
int main()
{
int a = 1, flagg=1;
while (a != 0) {
cout << "输入1、2、3、4分别为执行复数相加、减、乘、除。" << endl;
cout << "输入5为执行复数转化为模加角,输入6为执行复数模加角转化为一般形式" << endl;
cout << "输入0为退出。" << endl;
cout << "输入复数的格式为a b(一般形式或者模+角形式均可)"<<endl;
cout << "请输入您希望执行的内容:" << endl;
cin >> a;
if (a>=1 and a<=4) {
cout << "请选择您输入的格式,1为一般情况,2为模+角情况" << endl;
cin >> flagg;
}
if ((flagg == 1 or flagg == 2) and (a >= 0 and a <= 6)) {
switch (a)
{
double a1, a2, a3, a4;
case 0:
cout << "拜了个拜!" << endl;
break;
case 1:
cout << "请输入复数1:" << endl;
cin >> a1 >> a2;
cout << "请输入复数2:" << endl;
cin >> a3 >> a4;
if (flagg == 1) {
complex c1(a1, a2), c2(a3, a4);
complex c3(c1 + c2);
cout << "一般形式为:" << c3;
c3.conversion1(c3);
cout << "模加角形式为:";
c3.display(c3);
}
if (flagg == 2) {
complex c1(a1, a2, 1), c2(a3, a4, 1);
c1.conversion2(c1);
c2.conversion2(c2);
complex c3(c1 + c2);
c3.conversion1(c3);
cout << "一般形式为:" << c3;
cout << "模加角形式为:";
c3.display(c3);
}
break;
case 2:
cout << "请输入被减复数1:" << endl;
cin >> a1 >> a2;
cout << "请输入减复数2:" << endl;
cin >> a3 >> a4;
if (flagg == 1) {
complex c1(a1, a2), c2(a3, a4);
complex c3(c1 - c2);
c3.conversion1(c3);
cout << "一般形式为:" << c3;
cout << "模加角形式为:";
c3.display(c3);
}
if (flagg == 2) {
complex c1(a1, a2, 1), c2(a3, a4, 1);
c1.conversion2(c1);
c2.conversion2(c2);
complex c3(c1 - c2);
c3.conversion1(c3);
cout << "一般形式为:" << c3;
cout << "模加角形式为:";
c3.display(c3);
}
break;
case 3:
cout << "请输入复数1:" << endl;
cin >> a1 >> a2;
cout << "请输入复数2:" << endl;
cin >> a3 >> a4;
if (flagg == 1) {
complex c1(a1, a2), c2(a3, a4);
complex c3(c1 * c2);
c3.conversion1(c3);
cout << "一般形式为:" << c3;
cout << "模加角形式为:";
c3.display(c3);
}
if (flagg == 2) {
complex c1(a1, a2, 1), c2(a3, a4, 1);
c1.conversion2(c1);
c2.conversion2(c2);
complex c3(c1 * c2);
c3.conversion1(c3);
cout << "一般形式为:" << c3;
cout << "模加角形式为:";
c3.display(c3);
}
break;
case 4:
cout << "请输入复数1:" << endl;
cin >> a1 >> a2;
cout << "请输入复数2:" << endl;
cin >> a3 >> a4;
if (flagg == 1) {
complex c1(a1, a2), c2(a3, a4);
complex c3(c1 / c2);
c3.conversion1(c3);
cout << "一般形式为:" << c3;
cout << "模加角形式为:";
c3.display(c3);
}
if (flagg == 2) {
complex c1(a1, a2, 1), c2(a3, a4, 1);
c1.conversion2(c1);
c2.conversion2(c2);
complex c3(c1 / c2);
c3.conversion1(c3);
cout << "一般形式为:" << c3;
cout << "模加角形式为:";
c3.display(c3);
}
break;
case 5:
cout << "请输入复数:" << endl;
cin >> a1 >> a2;
complex c6(a1, a2);
c6.conversion1(c6);
cout << "模加角形式为:";
c6.display(c6);
break;
case 6:
cout << "请输入复数:" << endl;
cin >> a1 >> a2;
complex c7(a1, a2,1);
c7.conversion2(c7);
cout << "一般形式为:" << c7;
break;
}
cout << "本轮程序执行完毕" << endl;
cout << endl;
cin.clear();
}
}
}