nikpez di nikpez
Ominide 738 punti

Esercizio C++ - Classi e funzioni friend

Scrivere un pgn C++ che consenta di effettuare le quattro operazioni aritmetiche tra i numeri razionali, utilizzando una classe frazione opportunamente costruita.
Dopo un’accurata analisi si perviene alla seguente dichiarazione della classe frazione:
class frazione{
friend frazione somma (const frazione & a, const frazione & b);
friend frazione differenza (const frazione & a, const frazione & b);
friend frazione prodotto (const frazione & a, const frazione & b);
friend frazione quoziente (const frazione & a, const frazione & b);
public:
frazione(); //costruttore di default
frazione(int num, unsigned int den =1); //costruttore generico
void ricevi(); //input
void comunica(); //output
private:
void riduci(); //funzione di servizio
long num; //numeratore

unsigned long den; //denominatore > 0
};
Osservazioni:
Che cosa sono le funzioni friend?
Le funzioni friend sono funzioni che, pur non appartenendo alla classe, hanno libero accesso a tutti i campi
(anche a quelli privati) della classe stessa.
Es.
friend frazione somma (const frazione & a, const frazione & b);
Questa funzione prende in input due oggetti di tipo frazione e ritorna, per valore, un oggetto di tipo frazione che
rappresenta la somma dei due oggetti (a e b) di input.
Implementazione (delle funzioni friend):
Non si indica né la parola chiave friend, né il riferimento alla classe.
frazione somma (const frazione & a, const frazione & b)
{
…..
}
Il metodo privato riduci() “semplifica” un oggetto di tipo frazione.
Ti ricordo che per ridurre ai minimi termini una frazione occorre dividere numeratore e denominatore per il loro massimo comun divisore. La funzione riduci() utilizza una funzione ricorsiva mcd() per il calcolo del MCD.

a) implementa in C++ la classe frazione;
b) costruisci un semplice pgm C++ per provare la classe frazione.

Registrati via email