FP2 - Práctica 2
Construcción de una clase Fracción
del 20 al 26 de Marzo de 2003
Las soluciones no son únicas, estas son las que yo he programado para el laboratorio, no son las mejores seguramente.
|
0. Objetivos El objetivo de esta práctica es la implementación de una clase en C++ y la construcción de un programa que la utilice. La clase a implementar será la clase ‘fFracción’ y realizaremos un programa que calcule el sumatorio de una serie de fraccciones. 1. Introducción Una fracción (número racional) está caracterizada por un numerador y por un denominador, teniendo la forma: numerador / denominador (Ej.: 7 / 3, -15 / 18). Una fracción puede tener un valor real equivalente, pero no es un número real. 2. Realización de la práctica a. Implementación de la clase y comprobación de su correcto funcionamiento En esta segunda práctica, se debe implementar una clase en C++ que permita representar el tipo ‘Fracción’, asumiendo el siguiente interfaz:
class Fraccion
{
public:
void Asignar (int num, int denom);
void Leer ();
void Escribir ();
Fraccion Sumar (Fraccion f) const;
Fraccion Restar (Fraccion f) const;
Fraccion Menos () const;
float Evaluar ();
bool Igual (Fraccion f);
private:
int numerador;
int denominador;
void Simplificar ();
}
La clase debe de estar implementada de manera que: (i) La fracción siempre se almacene en forma canónica (simplificada). Ej.: 4 / 2, no → 2 / 1, sí. (ii) El signo de la fracción debe de ir asociado al numerador. Por lo que, el denominador siempre será positivo. Ej.: 5 / -2, no → -5 / 2, sí. –7 / -3, no → 7 / 3, sí. (iii) Debe de avisar si la fracción tiene un denominador con valor 0 (cero), indicando que esa fracción no es válida (mensaje por pantalla). La interpretación de los métodos declarados en el interfaz es la siguiente: void Asignar (int num, int denom); Almacena la fracción que tiene numerador num y denominador denom en el objeto fracción que recibe el mensaje. void Leer (); Lee por teclado los datos de una fracción y los almacena en el objeto que recibe el mensaje. void Escribir (); Escribe por pantalla la fracción correspondiente al objeto que recibe el mensaje. Fraccion Sumar (Fraccion f) const; Suma dos fracciones, el objeto que recibe el mensaje más el objeto f. Devuelve el resultado de la suma y no modifica ninguno de los operandos. Fraccion Restar (Fraccion f) const; Resta dos fracciones, el objeto que recibe el mensaje menos el objeto f. Devuelve el resultado de la resta y no modifica ninguno de los operandos. Fraccion Menos () const; Devuelve, cambiada de signo, la fracción correspondiente al objeto que recibe el mensaje. float Evaluar (); Devuelve el valor real equivalente a dividir el numerador y el denominador de la fracción correspondiente al objeto que recibe el mensaje. bool Igual (Fraccion f); Compara la fracción correspondiente al objeto que recibe el mensaje y la fracción f y devuelve como resultado true si las dos fracciones son iguales y false en caso contrario. void Simplificar (); Simplifica la fracción correspondiente al objeto que recibe el mensaje (es un método privado). El funcionamiento de la clase construida se debe comprobar con el siguiente programa:
#include <iostream.h>
#include "fraccion.h"
int main()
{
Fraccion a, b, res;
a.Leer();
b.Asignar (5,-6);
if (a.Igual (b) )
cout << "a y b son iguales." << endl;
res = a.Sumar (b);
cout << "Suma de a y b: ";
res.Escribir();
cout << endl;
res = a.Restar (b);
cout << "Resta de a y b: ";
res.Escribir();
cout << endl;
return 0;
}
b. Realización de un programa que utilice la clase implementada Como final de la práctica se debe escribir un programa que permita calcular:
La variable n debe de ser una entrada del programa. Este programa realizará el cálculo de dos formas: (i) Usando fracciones. (ii) Usando el tipo float En cada ejecución del programa se deberán mostrar 3 resultados: (i) Fracción resultante del cálculo con fracciones. (ii) Valor real equivalente a la fracción anterior. (iii) Valor real resultante del cálculo con float. 4. Entrega de Programas Al comienzo de la siguiente sesión de prácticas se entregarán al profesor tres ficheros: 1) Ficheros de la clase Fraccion (##Fraccion.cpp y ##Fraccion.h) 2) Programa principal donde se realizan y comparan los sumatorios (##Sumas.cpp). Nota Muy Importante Antes de poder empezar a realizar cualquiera de las prácticas es necesario presentar las hojas de especificación de programas (documentación de programas) con las tareas que se van a realizar en la práctica, explicando brevemente como se van a solucionarse los problemas que se plantean.
ENTREGA DE PROGRAMAS: Al comenzar la sesión de prácticas del 27 de Marzo al 4 de Abril.
|