#include<iostream.h>
typedef float * Complex;
Status InitComplex(Complex &C,float r1,float r2){
  C=new float[2];
  if(!C) return OVERFLOW;
  C[0]=r1;C[1]=r2;
  return OK;
}
Status DestoryComplex(Complex &C){
  delete[] C;
  return OK;
}
Status OutPut(Complex C){
  if(C[0]==0&&C[1]==0) cout<<0;
  if(C[0]&&C[1]>0) cout<<C[0]<<'+'<<C[1]<<'i';
  if(C[0]&&C[1]<0) cout<<C[0]<<C[1]<<'i';
  if(C[0]&&C[1]==0) cout<<C[0];
  if(C[0]==0&&C[1]) cout<<C[1]<<'i';
  return OK;
}
Status GetRe(Complex C,float &r1){
  r1=C[0];
  return OK;
}
Status GetIm(Complex C,float &r2){
  r2=C[1];
  return OK;
}
Status AddComplex(Complex C1,Complex C2,Complex &C){
  InitComplex(C,C1[0]+C2[0],C1[1]+C2[1]);
  return OK;
}
Status ReduceComplex(Complex C1,Complex C2,Complex &C){
  InitComplex(C,C1[0]-C2[0],C1[1]-C2[1]);
  return OK;
}
Status ChengfaComplex(Complex C1,Complex C2,Complex &C){
  float r1,r2;
  r1=C1[0]*C2[0]-C1[1]*C2[1];
  r2=C1[0]*C2[1]+C1[1]*C2[0];
  InitComplex(C,r1,r2);
  return OK;
}