#include <iostream>
#include <string>
#include <fstream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef struct {
float Realpart; //实数集,实部
float Imagepart; //实数集,虚部
}Complex;
void Create(Complex& C, float x, float y)
{//构造一个复数
C.Realpart = x;
C.Imagepart = y;
}
float GetReal(Complex C)
{ //取复数C=x+yi的实部
return C.Realpart;
}
float Getimag(Complex C)
{ //取复数C=x+yi的虚部
return C.Imagepart;
}
Complex Add(Complex C1, Complex C2)
{ //求两个复数C1和C2的和sum
Complex sum;
sum.Realpart = C1.Realpart + C2.Realpart;
sum.Imagepart = C1.Imagepart + C2.Imagepart;
return sum;
}
Complex Sub(Complex C1, Complex C2)
{ //求两个复数C1和C2的差difference
Complex difference;
difference.Realpart = C1.Realpart - C2.Realpart;
difference.Imagepart = C1.Imagepart - C2.Imagepart;
return difference;
}
Complex mul(Complex C1, Complex C2)
{//求两个复数C1和C2的积
Complex mul;
mul.Realpart = C1.Realpart * C2.Realpart;
mul.Imagepart = C1.Imagepart * C2.Imagepart;
return mul;
}
Complex div(Complex C1, Complex C2)
{ //求两个复数C1和C2的商
Complex div;
div.Realpart = C1.Realpart / C2.Realpart;
div.Imagepart = C1.Imagepart / C2.Imagepart;
return div;
}
int main() {
Complex Com, Com1, Com2, Com3;
float R, I, R1, I1, R2, I2;
int choose = -1;
cout << "1. 建立\n";
cout << "2. 取实部\n";
cout << "3. 取虚部\n";
cout << "4. 求和\n";
cout << "5. 求差\n";
cout << "6. 求积\n";
cout << "7. 求商\n";
cout << "0. 退出\n\n";
while (choose != 0)
{
cout << "请选择:";
cin >> choose;
switch (choose) {
case 1://建立
cout << "输入1个复数\n";
cin >> R >> I;
Create(Com, R, I);
cout << "复数:" << Com.Realpart << "+" << Com.Imagepart << "i" << endl;
break;
case 2: //取实部
cout << "输入1个复数\n";
cin >> R1 >> I1;
Create(Com, R1, I1);
cout << "复数实部:" << GetReal(Com) << endl;
break;
case 3://取虚部
cout << "输入1个复数\n";
cin >> R1 >> I1;
Create(Com, R1, I1);
cout << "复数虚部:" << Getimag(Com) << endl;
break;
case 4: //求和
cout << "输入第1个复数\n";
cin >> R1 >> I1;
Create(Com1, R1, I1);
cout << "输入第2个复数\n";
cin >> R2 >> I2;
Create(Com2, R2, I2);
Com3 = Add(Com1, Com2);
cout << "复数相加:" << Com3.Realpart << "+" << Com3.Imagepart << "i" << endl;
break;
case 5: //求差
cout << "输入第1个复数\n";
cin >> R1 >> I1;
Create(Com1, R1, I1);
cout << "输入第2个复数\n";
cin >> R2 >> I2;
Create(Com2, R2, I2);
Com3 = Sub(Com1, Com2);
cout << "复数相减:" << Com3.Realpart << "-" << Com3.Imagepart << "i" << endl;
break;
case 6: //求积
cout << "输入第一个复数\n";
cin >> R1 >> I1;
Create(Com1, R1, I1);
cout << "输入第2个复数\n";
cin >> R2 >> I2;
Create(Com2, R2, I2);
Com3 = mul(Com1, Com2);
cout << "复数相乘:" << Com3.Realpart << "+" << Com3.Imagepart << "i" << endl;
break;
case 7: //求商
cout << "输入第一个复数\n";
cin >> R1 >> I1;
Create(Com1, R1, I1);
cout << "输入第2个复数\n";
cin >> R2 >> I2;
Create(Com2, R2, I2);
Com3 = div(Com1, Com2);
cout << "复数相除:" << Com3.Realpart << "+" << Com3.Imagepart << "i" << endl;
break;
}
}
return 0;
}
抽象数据类型-复数运算
于 2023-10-15 07:44:39 首次发布