Laboratorio di calcolo I
Prova pratica del 16/6/2009
Scrivere un programma che data un coppia di numeri interi positivi, A e
B, ne determini il massimo comune divisore.
Si suggerisce di implementare nel main solo
la lettura di A e B (ed il controllo che siano
>=0)
la chiamata ad una funzione apposita
la stampa del risultato
e di implementare una funzione (prototipo int
max_com_den(int A, int B);)
che restituisca il risultato.
Nella funzione max_com_den potete implementare l'algoritmo seguente (di
Euclide) o un altro di vostra scelta.
L'algoritmo suggerito e' un algoritmo
ricorsivo ovvero la funzione max_com_den richiama se' stessa: conterra'
qualcosa del tipo
return max_com_den(......);
Partendo dalla coppia di interi (A,B) sostiuirla ripetutamente
con la coppia (B%A,A) fino a quando il primo valore della coppia non si
annulla. Quando cio' si verifica il secondo valore e' il massimo comune
divisore.
Esempio
A B
1710 808
808 1710
94 808
56 94
38 56
18 38
2 18
0
2
il risultato e' 2 !
Suggerimenti:
scrivere un file .h con il prototipo della funzione
scrivere un file .cc contenente la funzione inizialmente vuota (con
solo un return 1;)
scrivere un file .cc contenente il programma main
nel main leggere i due valori di A e B, controllarli, chiamare la
funzione, stampare il risultato.
solo quando questa parte compila e gira (stampando solo 1) dedicatevi
allo sviluppo dell'algoritmo da inserire nella
funzione.