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)