La funcion para transformar de rectanular a polar y viceversa ya la tenia, mi duda era que para transformarlo lo hacia asi: a!=x sobrecargando el operador != pero quiero hacerlo para hacer con otro operador que solo acepte un agumento por ejemplo a=x| <-- Algo asi
este es el codigo:
complejo.h:
#include <conio.h>
#include <math.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
class complejo{
private:
double r,i;
char a;
public:
complejo(){
r=0.0;
i=0.0;
a='a';
}
complejo(double real, double imaginario,char atributo){
r=real;
i=imaginario;
a=atributo;
}
void setRealImaginario(double real,double imaginario,char atributo){
r=real;
i=imaginario;
a=atributo;
}
double getReal(){
return r;
}
double getImaginario(){
return i;
}
char getAtributo(){
return a;
}
void setMagnitudAngulo(double mag, double ang){
r=mag;
i=ang;
}
double getMagitud(){
return r;
}
double getAngulo(){
return i;
}
void imprimeRectangular(){
if(r!=0&&i!=0){
cout <<"\n" << r << "," << i << "i";
}
else if(r==0&&i!=0){
cout <<"\n" << i <<"i";
}
else if(r!=0&&i==0){
cout <<"\n" << r;
}
else{
cout <<"\n0";
}
}
complejo operator+(const complejo&op2) const{
complejo suma;
if(op2.a == 'r'){
suma.r= r+op2.r;
suma.i= i+op2.i;
cout << "\nResultado de la Suma" << suma.r << "," << suma.i << "i";
return suma;
}
else{
suma.r= r+op2.r;
suma.i= i+op2.i;
cout<<"\nResultado de la Suma: " << suma.r << ","<< suma.i<< "\xF8";
return suma;
}
}
complejo operator-(const complejo&op2) const{
complejo resta;
if(op2.a == 'r'){
resta.r= r-op2.r;
resta.i= i-op2.i;
cout << "\nResultado de la Resta: " << resta.r << "," << resta.i << "i";
return resta;
}
else{
resta.r= r-op2.r;
resta.i= i-op2.i;
cout << "\nResultado de la Resta: " << resta.r << "," << resta.i << "\xF8";
return resta;
}
}
complejo operator*(const complejo&op2) const{
complejo multi;
if(op2.a == 'r'){
multi.r = (r*op2.r)-(i*op2.i);
multi.i = (r*op2.i)+(i*op2.r);
cout <<"\nResultado de la Multiplicacion: " << multi.r << "," << multi.i << "i";
return multi;
}
else{
multi.r = r*op2.r;
multi.i = i+op2.i;
cout <<"\nResultado de la Multiplicacion: " << multi.r << "," << multi.i << "\xF8";
return multi;
}
}
complejo operator/(const complejo&op2) const{
complejo divi;
if(op2.a == 'r'){
divi.r =((r*op2.r)+(i*op2.i))/(pow(op2.r,2)+pow(op2.i,2));
divi.i =((i*op2.r)-(r*op2.i))/(pow(op2.r,2)+pow(op2.i,2));
cout <<"\nResultado de la Division: " << divi.r << "," << divi.i << "i";
return divi;
}
else{
divi.r= r/op2.r;
divi.i= i-op2.i;
cout <<"\nResultado de la Division: " << divi.r << "," << divi.i << "\xF8";
return divi;
}
}
complejo operator!=(const complejo&op2) const{
complejo trans;
if(op2.a == 'p'){
trans.r=op2.r*(cos(op2.i*.017453));
trans.i=op2.r*(sin(op2.i*.017453));
cout <<"Resultado de la Transformacion a Rectangular: " << trans.r << "," << trans.i << "i";
return trans;
}
else{
if((op2.r>0)&&(op2.i>0)){
trans.r=sqrt((pow(op2.r,2))+(pow(op2.i,2)));
trans.i=((atan(op2.i/op2.r))*57.29);
trans.i=sqrt(pow(trans.i,2));
}
if((op2.r<0)&&(op2.i>0)){
trans.r=sqrt((pow(op2.r,2))+(pow(op2.i,2)));
trans.i=((atan(op2.r/op2.i))*57.29);
trans.i=(sqrt(pow(trans.i,2)))+90;
}
if((op2.r>0)&&(op2.i<0)){
trans.r=sqrt((pow(op2.r,2))+(pow(op2.i,2)));
trans.i=((atan(op2.i/op2.r))*57.29);
trans.i=-(sqrt(pow(trans.i,2)));
}
if((op2.r<0)&&(op2.i<0)){
trans.r=sqrt((pow(op2.r,2))+(pow(op2.i,2)));
trans.i=((atan(op2.r/op2.i))*57.29);
trans.i=-(sqrt(pow(trans.i,2)))-90;
}
cout<<"\nResultado de la Transformacion a Polar" << trans.r<< ","<< trans.i<< "\xF8";
return trans;
}
}
};
complejo.cpp:
using namespace std;
#include "complejo.h"
void main(){
complejo x,y(4,5,'p'),z(10,-10,'r'),a;
x.setRealImaginario(20,40,'r');
a!=x;
_getch();
}
se que lo del cout dentro de la sobrecarga no deberia de ir ahi por el return, pero lo deje por comodidad, para que imprimiera directo sin necesidad de mandar llamar la funcion para imprimir