PRÀCTICA Nº 2: 1 sesión

(del 20 al 26 de Març de 2003)

Construcció d’una classe Fracció

0. Objectius

El objectiu d’esta pràctica es l’implementació d’una classe en C++ i la construcció d’un programa que la utilice. La classe a implementar serà la classe ‘Fracció’ i realitzarem un programa que calcule el sumatori de una serie de fracccions.

1. Introducció

Una fracció (número racional) està caracteritzat per un numerador i per un denominador, tenent la forma: numerador/denominador (Ex.: 7 / 3, -15 / 18). Una fracció pot tindre un valor real equivalent, pero no és un número real.

2. Realització de la pràctica

a. Implementació de la classe i comprovació del seu correcte funcionament

En esta seguna pràctica, es té que implementar una classe en C++ que permitisca representar el tipus ‘Fracció’, asumient la segúent interficie:


    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 classe tindrà que estar implementada de manera que:

(i) La fracció sempre s’almacene en forma canònica (simplificada).

Ex.: 4 / 2, no → 2 / 1, sí.

(ii) El signe de la fracció deu d’anar asociat al numerador. Per lo que, el denominador sempre serà positiu.

Ex.: 5 / -2, no → -5 / 2, sí. –7 / -3, no → 7 / 3, sí.

(iii) Deu d’avisar si la fracció té un denominador amb valor 0 (cero), indicant que eixa fracció no és vàlida (missatge per pantalla).

L’interpretación dels mètodes declarats en la interficie és la següent:

void Asignar (int num, int denom);

Guarda la fracció que té numerador num i denominador denom en el objecte fracció que rep el missatge.

void Leer ();

Llig per teclat les dades d’una fracció i els guarda en el objecte que rep el missatge.

void Escribir ();

Escriu per pantalla la fracció corresponent al objecte que rep el missatge.

Fraccion Sumar (Fraccion f) const;

Suma dos fraccions, el objecte que rep el missatge més el objete f. Ens torna el resultat de la suma i no modifica cap dels operants.

Fraccion Restar (Fraccion f) const;

Resta dos fraccions, el objecte que rep el missatge meins el objete f. Ens torna el resultat de la resta i no modifica cap dels operants.

Fraccion Menos () const;

Ens torna, cambiada de signe, la fracció corresponent al objecte que rep el missatge.

float Evaluar ();

Ens torna el valor real equivalent a dividir el numerador i el denominador de la fracció corresponent al objecte que rep el missatge.

bool Igual (Fraccion f);

Compara la fracción corresponent al objecte que rep el missatge i la fracció f i torna com a resultat true si les dos fraccions son iguals i false en cas contrari.

void Simplificar ();

Simplifica la fracció correspoent al objecte que rep el missatge (es un mètode privat).

El funcionament de la classe construida es deu de comprovar amb el següent 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. Realització d’un programa que utilice la classe implementada

Com a final de la pràctica es deu escriure un programa que permitisca calcular:

La variable n deu de ser una entrada del programa. Este programa realitzarà el càlcul de dos formes:

(i) Usant fraccions.

(ii) Usant el tipo float

En cada execució del programa es deuràn mostrar 3 resultats:

(i) Fracció resultant del càlcul amb fraccions.

(ii) Valor real equivalent a la fracció anterior.

(iii) Valor real resultant del càlcul amb float.

(Nota: Proveu el funcionament amb valors de n al voltant de 10.000)

4. Entrega de programes

Al començar la següent sesió de pràctiques s’entregaràn al profesor tres fitxers:

1) Fitxers de la classe Fraccion (##Fraccion.cpp y ##Fraccion.h)

2) Programa principal on es realicen i comparen els sumatoris (##Sumas.cpp).

Nota Molt Important

Avanç de poder començar a realitzar qualsevol de les pràctiques es necessari presentar les fulles de especificació de programes (documentació de programes) amb les tasques que es van a realitzar en la pràctica, explicant breument com es van a solventar els problemes que es plantetjen.

 

 

ENTREGA DE PROGRAMES: Al començar la sesió de pràctiques del 27 de Març al 4 d’Abril.