#include <iostream>
using namespace std;
struct complex
{
double Re;
double Im;
};
void vvod_complex(complex *x);
void vivod_complex(complex *x);
void plus(complex *x, complex *y, complex *z);
void minus(complex *x, complex *y, complex *z);
void multy(complex *x, complex *y, complex *z);
void devide(complex *x, complex *y, complex *z);
void pow_(complex *x, int n, complex *z);
int main()
{
complex a,b,c;
vvod_complex(&a);
vvod_complex(&b);
cout<<"a="; vivod_complex(&a);
cout<<"b="; vivod_complex(&b);
plus(&a,&b,&c);
cout<<"a+b="; vivod_complex(&c);
minus(&a,&b,&c);
cout<<"a-b="; vivod_complex(&c);
multy(&a,&b,&c);
cout<<"a*b="; vivod_complex(&c);
devide(&a,&b,&c);
cout<<"a/b="; vivod_complex(&c);
int n=4;
pow_(&a,n,&c);
cout<<"a^"<<n<<"="; vivod_complex(&c);
system("pause");
}
void pow_(complex *x, int n, complex *z)
{
multy(x,x,z);
for (int i=1;i<=n-2;i++)
multy(x,z,z);
}
void devide(complex *x, complex *y, complex *z)
{
z->Re=(x->Re*y->Re + x->Im*y->Im)/(y->Re*y->Re+y->Im*y->Im);
z->Im=(x->Im*y->Re - x->Re*y->Im)/(y->Re*y->Re+y->Im*y->Im);
}
void multy(complex *x, complex *y, complex *z)
{
z->Re=x->Re*y->Re - x->Im*y->Im;
z->Im=x->Re*y->Im + x->Im*y->Re;
}
void minus(complex *x, complex *y, complex *z)
{
z->Re=x->Re - y->Re;
z->Im=x->Im - y->Im;
}
void plus(complex *x, complex *y, complex *z)
{
z->Re=x->Re + y->Re;
z->Im=x->Im + y->Im;
}
void vvod_complex(complex *x)
{
cin>>x->Re>>x->Im;
}
void vivod_complex(complex *x)
{
cout<<x->Re;
if (x->Im>0 ) cout <<"+";
cout<<x->Im<<"i"<<endl;
}
|