Universidad de Costa Rica
|
|
// ...
class racional {
private:
long m_num; ///< Numerador
long m_den; ///< Denominador
public:
//...
racional operator - (); // menos unario
friend racional operator + (const racional&, const racional&);
friend racional operator - (const racional&, const racional&);
friend racional operator * (const racional&, const racional&);
friend racional operator / (const racional&, const racional&);
friend bool operator == (const racional&, const racional&);
friend bool operator < (const racional&, const racional&);
friend bool operator != (const racional&, const racional&);
friend bool operator <= (const racional&, const racional&);
friend bool operator >= (const racional&, const racional&);
friend bool operator > (const racional&, const racional&);
friend ostream& operator << (ostream &, const racional& );
friend istream& operator >> (istream &, racional& );
friend double real (const racional& ); // Conversión a real
friend long integer(const racional& ); // Conversión a long
}; // racional
// ...
rational.h
Con alguna frecuencia es necesario hacer aritmética con
números racionales, para lo que conviene contar con una
clase números racionales. En el siguiente artículo,
disponible en Internet, se describe una implementación de
la clase
rational
para el
lenguaje Turbo Pascal:
Rational.pas
";
Reporte técnico
ECCI-94-03; Proyecto
326-89-019; 1994.
http://www.di-mare.com/adolfo/p/rational.htm
http://www.di-mare.com/adolfo/p/src/rational.zip
El objetivo de esta tarea programada es darle la oportunidad de
modificar una clase C++ cambiándole por completo el
Rep. Por eso, en lugar de
utilizar los campos (num,den) para el denominador y denominador de
la clase
rational
, usted
los sustituirá por una lista que siempre contenga 2 valores:
el primero es el numerador y el segundo es el denominador. Use
la lista
std::list<>
de la biblioteca estándar de C++.
No olvide implementar el la función check_ok()
que verifica la
invariante de la clase.
Tome la implementación de la Figura 2, hágala funcionar y documéntela apropiadamente. Use Doxygen.
Entregue 2 versiones de su clase rational
. En el
subdirectorio llamado simple
incluya la
implementación con la
cantidad mínima de cambios para que compile el programa
p2-ta-3.cpp
de la
Figura 2 compile y funcione. En la segunda
carpeta, llamada completo
, incluya otra
implementación que sirva para que el programa de prueba
test_rational.cpp
también funcione. Explique por
qué la versión simple
(que obviamente tiene
errores de compilación) funciona correctamente con
p2-ta-3.cpp
pese a que no funciona con
test_rational.cpp
.
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
Tiempo de entrega: | 7 días | |
Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|