| 
              #include <stdio.h>#include <stdlib.h>
 
 typedef struct
 {
 float a;
 float b;
 } COMPLEX;
 
 COMPLEX *comp_add(COMPLEX *a, COMPLEX *b)
 {
 a->a += b->a;
 a->b += b->b;
 return a;
 }
 
 COMPLEX *comp_substract(COMPLEX *a, COMPLEX *b)
 {
 a->a -= b->a;
 a->b -= b->b;
 return a;
 }
 
 COMPLEX *comp_multiply(COMPLEX *a, COMPLEX *b)
 {
 COMPLEX *c = (COMPLEX *)malloc(sizeof(COMPLEX));
 c->a = a->a * b->a - a->b * b->b;
 c->b = a->b * b->a + a->a * b->b;
 *a = *c;
 free(c);
 return a;
 }
 
 COMPLEX *comp_divide(COMPLEX *a, COMPLEX *b)
 {
 COMPLEX c = *b;
 c.b = -c.b;
 comp_multiply(a, &c);
 comp_multiply(b, &c);
 a->a /= b->a;
 a->b /= b->a;
 return a;
 }
 
 int main()
 {
 COMPLEX a, b;
 char opr;
 scanf("%c%f%f%f%f", &opr, &a.a, &a.b, &b.a, &b.b);
 switch (opr)
 {
 case '-':
 comp_substract(&a, &b);
 break;
 case '*':
 comp_multiply(&a, &b);
 break;
 case '/':
 comp_divide(&a, &b);
 break;
 default:
 case '+':
 comp_add(&a, &b);
 break;
 }
 printf("%.2f+%.2fi\n", a.a, a.b);
 return 0;
 }
 |