24.1.-
Explique el concepto de amistad en C++. Explique los aspectos
negativos de la amistad, tal y como se describen en la teoría.
24.2.-
Escriba una clase de numeros racionales.
Usaremos las funciones friend suma, resta, mult, div, menor y
copiar que realizan las operaciones +, -, *, /, < e =.
Defina
una clase para números racionales. Un número
racional es un "quebrado" formado por dos enteros y una
indicación de división. La división no se efectúa,
sólo se indica, como en 1/2, 2/3, 15/32, 16/5. Los números
racionales se representan como dos valores int, numerador y denominador.
Un
principio de la construcción de tipos de datos abstractos
es que debe hacer constructores para crear objetos con cualesquiera
valores válidos. Usted deberá incluir constructores
para crear objetos con pares de valores int; éste es un constructor
con dos parámetros int. Puesto que todo int también
es un racional, como 2/1 o 17/1, se debe proporcionar un constructor
con un sólo parámetro int.Proporcione funciones miembro
entrada y salida que reciban un argumento istream y ostream, respectivamente,
y obtengan números racionales en la forma 2/3 o 37/51 del
teclado (o de un archivo).
Proporcione
funciones friend suma, resta, mult y div que tengan dos argumentos
racionales por referencia y devuelvan un valor racional. Proporcione
una función menor que devuelva un valor bool y que tenga
dos parámetros racionales por referencia. Estas funciones
deberán efectuar la operación que su nombre sugiere.
Proporcione una función friend neg que tenga un sólo
parámetro racional por referencia y devuelva el negativo
del número racional. Proporcione una función friend
void copiar que tenga dos parámetros racionales por referencia.
El primero se llama a y el segundo se llama de. Esta función
copia un racional en otro.
Proporcione
una función main que pruebe exhaustivamente la implementación
de su clase. Las siguientes fórmulas serán útiles
para definir funciones:
a/b
+ c/d = (a*d + b*c) / (b*d)
a/b
- c/d = (a*d - b*c) / (b*d)
a/b
* c/d = (a*b) / (c*d)
(a/b)
/ (c/d) = (a*d) / (c*b)
-(a/b)
= (-a/b)
(a/b)
< (c/d) significa (a*d )< (c*b)
(a/b)==(c/d)
significa (a*d) == (c*b)
El
signo lo lleva el numerador, el denominador es siempre positivo.
|