Hola,
por qué no creas una estructura llamada numero imaginario que contenga la parte real y la parte imaginaria?
typedef struct numero_imag
{
double parte_real;
double parte_imag;
double mod;
double arg;
}st_numero_imag;
y a partir de ahí la cosa es sencilla...
Sumar dos números:
st_numero_imag num1,num2,res;
res.parte_real=num1.parte_real+num2.parte_real;
res.parte_imag=num1.parte_imag+num2.parte_imag;
res.mod=sqrt(pow(res.parte_real,2)+pow(res.parte_imag,2));
res.arg=atan(res.parte_imag/res.parte_real);
Como verás he introducido en la estructura el formato módulo y exponente que
facilita las operaciones de multiplicación y división.
Dentro de la librería math.h de microsoft (
MSDN) puedes encontrar la estructura _complex y alguna otra función para operar con estos números (siempre y cuando uses el visual studio de microsoft)...
Si programas en C++ puedes crear una clase con bastante potencia que haga todo lo anterior y mucho más, automáticamente (sobrecargando los operadores)... Supongo que incluso encuentres alguna clase que lo haga por ti (como la clase complex de microsoft)
El resto corre de tu parte...
Un saludo.