BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 24 Sistema de protección
Ejercicios Propuestos

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.