#include <stdio.h>
typedef struct complex complex;
struct complex {
double re;
double im;
};
complex AddComplex(complex x, complex y);
complex SubComplex(complex x, complex y);
complex MulComplex(complex x, complex y);
complex DivComplex(complex x, complex y);
void ShowComplex(char varname[ ], complex x);
int main(void);
complex AddComplex(complex x, complex y)
{
complex z;
z.re = x.re + y.re;
z.im = x.im + y.im;
return (z);
}
complex SubComplex(complex x, complex y)
{
complex z;
z.re = x.re - y.re;
z.im = x.im - y.im;
return (z);
}
complex MulComplex(complex x, complex y)
{
complex z;
z.re = x.re * y.re - x.im * y.im;
z.im = x.re * y.im + y.re * x.im;
return (z);
}
complex DivComplex(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));
return (z);
}
void ShowComplex(char varname[ ], complex x)
{
printf("%s = %3.1lf + %3.1lfi\n\n", varname, x.re, x.im);
}
int main(void)
{
complex x, y, z;
double rx,ix,ry,iy;
printf("x実数部分の値:");
scanf("%lf",&rx);
printf("x虚数部分の値:");
scanf("%lf",&ix);
printf("y実数部分の値:");
scanf("%lf",&ry) ;
printf("y虚数部分の値:");
scanf("%lf",&iy) ;
x.re = rx;
x.im = ix;
y.re = ry;
y.im = iy;
ShowComplex("x", x);
ShowComplex("y", y);
z = AddComplex(x, y);
ShowComplex("x + y", z);
z = SubComplex(x, y);
ShowComplex("x - y", z);
z = MulComplex(x, y);
ShowComplex("x * y", z);
z = DivComplex(x, y);
ShowComplex("x / y", z);
}