Código fuente de Dev c para realizar operaciones con números complejos, con sobre carga de operadores y con estructuras de tipo de dato
/*
Name: Practica 1
Copyright: Sabbat.Co
Author: Ky0r!
Date: 23/02/10 13:25
Description: Operaciones con números imaginarios
*/
#include"stdio.h"
#include "stdlib.h"
typedef struct
{
float real;
float imag;
}Complejo;
Complejo operator+(Complejo a,Complejo b);
Complejo operator-(Complejo a,Complejo b);
Complejo operator*(Complejo a,Complejo b);
Complejo operator/(Complejo a,Complejo b);
main ()
{
Complejo a,b,c;
int i;
printf("\n\n Programa que realiza las operaciones básicas con números complejos");
printf("\n\n Introduce la parte real de a: ");
scanf("%f",&a.real);
printf(" la parte imaginaria: ");
scanf("%f",&a.imag);
printf("\n Introduce la parte real de b: ");
scanf("%f",&b.real);
printf(" la parte imaginaria: ");
scanf("%f",&b.imag);
printf("\n\n Elige la operación que deseas realizar \n\n 1.- Suma \n 2.- Resta \n 3.- Multiplicación \n 4.- División \n\n Opción: ");
scanf("%d",&i);
switch (i)
{
default:
{
printf("\n\n Operación no valida, se terminara el programa!!! \n\n");
system("PAUSE");
break;
}
case 1:
{
c=a+b;
printf("\n\n (%f+%fi)+(%f+%fi)=%f+%fi \n\n",a.real,a.imag,b.real,b.imag,c.real,c.imag);
system("PAUSE");
break;
}
case 2:
{
c=a-b;
printf("\n\n (%f+%fi)-(%f+%fi)=%f+%fi \n\n",a.real,a.imag,b.real,b.imag,c.real,c.imag);
system("PAUSE");
break;
}
case 3:
{
c=a*b;
printf("\n\n (%f+%fi)(%f+%fi)=%f+%fi \n\n",a.real,a.imag,b.real,b.imag,c.real,c.imag);
system("PAUSE");
break;
}
case 4:
{
c=a/b;
printf("\n\n (%f+%fi)/(%f+%fi)=%f+%fi \n\n",a.real,a.imag,b.real,b.imag,c.real,c.imag);
system("PAUSE");
break;
}
}
}
Complejo operator+(Complejo a,Complejo b)
{
Complejo r;
r.real=a.real+b.real;
r.imag=a.imag+b.imag;
return (r);
}
Complejo operator-(Complejo a,Complejo b)
{
Complejo r;
r.real=a.real-b.real;
r.imag=a.imag-b.imag;
return (r);
}
Complejo operator*(Complejo a,Complejo b)
{
Complejo r;
r.real=(a.real*b.real)-(a.imag*b.imag);
r.imag=(a.real*b.imag)+(b.real*a.imag);
return (r);
}
Complejo operator/(Complejo a,Complejo b)
{
Complejo r;
r.real=((a.real*b.real)+(a.imag*b.imag))/((b.real*b.real)+(b.imag*b.imag));
r.imag=((a.imag*b.real)-(a.real*b.imag))/((b.real*b.real)+(b.imag*b.imag));
return (r);
}