[C con Clase] Correccion de Ejercicio Particular
Luis Gutierrez Gomez
gutierrezgl en hotmail.com
Dom Abr 15 21:46:56 CEST 2012
Cordiales Saludos; Estuve siguiendo el curso de C++, que lo dan en la web de CConClase
y estuvo muy interesante, como no habian muchos ejercicios para desarrollar y practicar lo aprendido,
especialmente en aplicaciones propias de C++, consulté sobre donde conseguir ejercicios y me
recomendaron el Libro de Deytel & Deytel, la verdad que es muy bueno y complementa muy bien con
las enseñanzas de aca. Estoy resolviendo los ejerciccios del Capitulo 16 y por favor quisiera
que lo corrijan y me digan si cometí errores o donde podria mejorar, de antemano muchas gracias por su
apoyo.
Aqui dejo el enunciado:
16.5 Cree una clase llamada Complejo para realizar aritmetica con numeros complejos. Escriba un programa
controlador para probar sus clases.
Los numeros complejos tienen la forma:
parte real + parte imaginaria * i
en donde i es:
___
V -1
Utilice variables double para representar datos de tipo private de una clase. Proporcione un constructor
que permita inicializar un objeto de esta clase cuando se declare. El constructor debe contener valores
predeterminados, en caso de que no se proporcionen inicializadores. Proporcione funciones miembro
de tipo public para cada uno de los siguientes:
a) Suma de dos numeros complejos: las partes reales se suman juntas y las partes imaginarias se suman
juntas.
b) Resta de dos numeros complejos: la parte real del operando derecho se resta de la parte real del
operando izquierdo, y la parte imaginaria del operando derecho se resta de la parte imaginaria del
operando izquierdo.
c) Impresion de numeros complejos de la forma (a,b), en donde a es la parte real y b es la parte imaginaria.
SOLUCION
--------
#include <iostream>
using std :: cout;
using std :: endl;
class Complejo{
public:
Complejo(double = 0, double = 0);
void SumaComplejo ( double , double );
void RestaComplejo ( double , double );
void ImpresionComplejo (void);
private:
double real;
double imaginaria;
};
Complejo::Complejo(double re, double im){
real = re;
imaginaria = im;
}
void Complejo::SumaComplejo( double r2, double i2 ){
real = real + r2;
imaginaria = imaginaria + i2;
cout << "El resultado de la suma de complejos es:" << endl;
ImpresionComplejo ();
}
void Complejo::RestaComplejo( double r2, double i2 ){
real = real - r2;
imaginaria = imaginaria - i2;
cout << "El resultado de la resta de complejos es: " << endl;
ImpresionComplejo ();
}
void Complejo::ImpresionComplejo (){
cout << " ( " << real <<" , " << imaginaria << " *i ) " << endl;
}
int main ()
{
Complejo C1;
cout << "El complejo por defecto es: " << endl;
C1.ImpresionComplejo();
cout << "El segundo complejo es: "<< endl;
Complejo C2( 12.5, 28.4 );
C2.ImpresionComplejo();
C2.SumaComplejo( 8.9, 34.2 );
cout << "El tercer complejo es : " << endl;
Complejo C3( 23.8, 32.12 );
C3.ImpresionComplejo();
C3.RestaComplejo( 11.5, 13.8 );
return 0;
}
//////////////////////////////////////////////////////////////////
estaré atento, muchas gracias
Luis
Más información sobre la lista de distribución Cconclase