#include <iostream>
using namespace std;
typedef struct
{
double real;
double imag;
}Complex;
void InitComplex(Complex *&z)
{
z=new Complex;
}
void AssignComplex(Complex *&z,double v1,double v2)
{
z->real=v1;
z->imag=v2;
}
void DispComplex(const Complex *z)
{
cout<<"("<<z->real<<","<<z->imag<<")"<<endl;
}
void Add(const Complex *z1, const Complex *z2,Complex *&sum)
{
InitComplex(sum);
sum->real = z1->real +z2->real;
sum->imag = z1->imag +z2->imag;
}
void Difference(const Complex *z1,const Complex *z2, Complex *& dif)
{
InitComplex(dif);
dif->real = z1->real - z2->real;
dif->imag = z1->imag - z2->imag;
}
int main() {
double a,b;
Complex *z1,*z2,*sum,*diff;
cout<<"请输入第一个复数的实部:" ;
cin>>a;
cout<<"请输入第一个复数的虚部:";
cin>>b;
InitComplex(z1);
AssignComplex(z1,a,b);
cout<<"请输入第二个复数的实部:" ;
cin>>a;
cout<<"请输入第二个复数的虚部:";
cin>>b;
InitComplex(z2);
AssignComplex(z2,a,b);
cout<<"第二个复数为:";
DispComplex(z2);
InitComplex(sum);
Difference(z1,z2,sum);
cout<<"这两个复数的和为:";
DispComplex(sum);
InitComplex(diff);
Difference(z1,z2,diff);
cout<<"这两个复数的差为:";
DispComplex(diff);
delete z1;
delete z2;
return 0;
}
以复数为例,给出一个完整的抽象数据类型的定义、表现和实现