Laboratorio di Calcolo
AA 2004/05
Prova individuale - secondo gruppo

Viene fornita una classe denominata convertitore che permette di definire
oggetti caratterizzati da un numero double, il fattore di conversione,
che possiamo utilizzare per effettuare conversioni tra unita' di misura.
                                                                                
Sono disponibili 2 costruttori:
- in uno si fornisce direttamente il fattore
di conversione necessario per trasformare una quantita' espressa nella prima
unita' di misura in una espressa nella seconda,
- nell'altro si fornisce il
valore di una quantita' di riferimento qualsiasi espresso sia
nella prima e nella seconda unita' di misura e il costruttore si calcola
il fattore di conversione.
                                                                                
E' poi disponibile il metodo converti che restituisce il valore nella seconda
unita' di misura di una quantita' espressa nella prima unita' di misura.
                                                                                
0. create nel direttorio principale (/home/didxxx) il sottodirettorio
pind2_cognome. Spostatevici e scaricate li' il file convertitore.h.
(punteggio 1)

1. Scrivete un programma main che utilizzi questa classe per costruire
un oggetto che potete chiamare Conv_Rad_Grad in grado di convertire
radianti in gradi. Verificate che il programma compili e giri (anche se non
fara' nulla non deve dare errori!).
(punteggio 2)
                                                                               
2. Utilizzate l'oggetto Conv_Rad_Grad per
stampare il valore in gradi di una quantita' in radianti immessa dall'utente.
Compilate, girate, controllate che il programma fornisca risultati corretti.
(punteggio 2)
                                                                               
3. aggiungete alla classe un metodo che consenta di effettuare la conversione
inversa (da gradi a radianti): double converti_inv(double dato) e
provate ad usare anche questo dal programma principale per verificare che
agendo sull'angolo in gradi ottenuto al punto 2 si riottenga l'angolo in
radianti dal quale si era partiti.
(punteggio 2.5)
                                                                               
4. Come sapete non ha senso utilizzare angoli con valori maggiori di un angolo
giro. Modificate la classe in modo tale che il metodo converti restituisca
sempre valori in gradi compresi tra 0 e 360 (o se preferite tra -180 e 180).
Potete farlo in diversi modi
        - aggiungendo alla classe un metodo privato che, chiamato dal metodo
          converti, abbia il compito di trasformare l'angolo in radianti
          fornito in ingresso in un angolo compreso tra 0 e 2*M_PI
          (ricordatevi che M_PI e' un simbolo definito in math.h)
          prima di trasformarlo in gradi
        - aggiungendo un analogo metodo che trasformi l'angolo in gradi
          in un angolo compreso tra 0 e 360
        - aggiungendo uno dei due metodi sopraelencati non alla classe
          convertitore bensi' ad una classe derivata da essa e dedicata alle
          conversioni tra angoli
(punteggio 2.5)
                                                                               
NOTA: per ottenere un angolo minore di un angolo giro si divide l'angolo
per il valore dell'angolo giro. Ci interessano le cifre decimali del numero
ottenuto, quindi copiamo tale numero in un numero intero e sottraiamo
quest'ultimo dal precedente. L'angolo cercato e' pari al numero ottenuto
moltiplicato per l'angolo giro.
In alternativa potete usare in successione
una funzione trigonometrica (dichiarata in math.h) come
sin o cos (l'argomento deve essere in radianti) e la sua inversa (asin e acos)