Test Intermedio - Università degli Studi di Roma "Tor Vergata"

Test Intermedio
Roberto Basili
University of Rome Tor Vergata,
Department of Computer Science, Systems and Production,
00133 Roma (Italy),
[email protected]
April 16, 2007
1
Definizione del problema
Date due frazioni, espresse nella forma di due coppie di numeri interi positivi < num1, den1 >,
e < num2, den2 > , definire una funzione che, senza l’uso della divisione reale (cioe’ tra
numeri in virgola mobile) restituisca:
• 1 o 2 per segnalare quale delle due frazioni e’ maggiore dell’altra
• una terza frazione < num3, den3 > pari alla piu’ grande delle due, ridotta ai minimi
termini
Ad esempio la funzione dovr restituire 2 se le frazioni in ingresso sono < 1, 3 > e < 5, 10 >,
con l’assegamento alla terza frazione < num3, den3 > della coppia < 1, 2 >.
Il programma dovra’ poi consistere anche di un driver, cio di una funzione (main())per
la lettura dei dati di ingresso riguardanti le frazioni, e di una funzione per la stampa a
video dei risultati.
Suggerimenti: Per ridurre una frazione ai minimi termini si puo’ ricorrere all’algoritmo
di Euclide per il calcolo del massimo comun divisore tra il numeratore ed il denominatore
di una frazione, che riportato qui sotto:
Problema:
Determinare il M.C.D. di due numeri naturali dati diversi da 0
Algoritmo Euclide (1)
1. Dividere il primo numero per il secondo. Chiamare R il resto della divisione
2. Se R=0 hai finito: il secondo numero e’ il M.C.D.
3. Se R<>0 si operino i seguenti cambiamenti:
primo numero = secondo numero;
secondo numero = R.
4. Torna all’istr.1.
1