// OPERACIONES CON NUMEROS COMPLEJOS #include <stdio.h> #include <math.h> struct Complejo { float Real; // Real float Imag; // Imaginaria float Magn; // Magnitud float Angu; // Angulo }; void Menu(); void Ejecuta(int*); void PideDatos(); struct Complejo Lectura(struct Complejo, int*); void LeeDato(float*, char*); struct Complejo PolarARectangular(struct Complejo); struct Complejo RectangularAPolar(struct Complejo); void Sumar(); struct Complejo CA, CB; main() { Menu(); printf("\nF I N\n"); } void Menu() { int Opc = 0; while(Opc != 4) { system("clear"); printf("1.- Pedir Datos\n"); printf("2.- Sumar\n"); printf("3.- Producto\n"); printf("4.- Salir\n"); printf("Selecciona una opcion: "); scanf("%d", &Opc); Ejecuta(&Opc); } } void Ejecuta(int *Opc) { switch (*Opc) { case 1: PideDatos(); break; case 2: Sumar(); break; //case 3: Producto(); break; } } void Sumar() { float Real=0, Imag=0; Real = CA.Real + CB.Real; Imag = CA.Imag + CB.Imag; printf("R = %f + j%f\n", Real, Imag); scanf("%f", &Real); // Esperar un momento } void PideDatos() { int Formato = 0; printf("CA en que formato? (0=Rect, 1=Polar) "); scanf("%d", &Formato); CA = Lectura(CA, &Formato); printf("CB en que formato? (0=Rect, 1=Polar) "); scanf("%d", &Formato); CB = Lectura(CB, &Formato); printf("CA = %f + j%f\n", CA.Real, CA.Imag); printf("CB = %f + j%f\n", CB.Real, CB.Imag); scanf("%d", &Formato); } struct Complejo Lectura(struct Complejo NC, int *Formato) { if (*Formato) { LeeDato(&NC.Magn, "CA Magnitud "); LeeDato(&NC.Angu, "CA Angulo "); NC = PolarARectangular(NC); } else { LeeDato(&NC.Real, "CA Real "); LeeDato(&NC.Imag, "CA Imag "); NC = RectangularAPolar(NC); } return NC; } struct Complejo RectangularAPolar(struct Complejo NC) { NC.Magn = sqrt(pow(NC.Real,2) + pow(NC.Imag,2)); NC.Angu = atan2(NC.Imag, NC.Real); } struct Complejo PolarARectangular(struct Complejo NC) { NC.Angu = M_PI * NC.Angu / 180; NC.Real = NC.Magn * cos(NC.Angu); NC.Imag = NC.Magn * sin(NC.Angu); return NC; } void LeeDato(float *X, char *CAD) // (float X, char *CAD) { printf(CAD); scanf("%f", X); // scanf("%f", &X); }