Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia ESERCITAZIONE STRUTTURE DI CONTROLLO E VETTORI
Scrivere un programma C che - Acquisisca da tastiera 2 frazioni - Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.)
#include int main() { //... system("pause"); return(0); } Scrivere un programma C che - Acquisisca da tastiera 2 frazioni - Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) Impostiamo la solita struttura di partenza di un programma C Scrivere un programma C che - Acquisisca da tastiera 2 frazioni - Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) int N1,N2,D1,D2; printf("1^ frazione A/B: "); scanf("%d/%d",&N1,&D1); printf("2^ frazione C/D: "); scanf("%d/%d",&N2,&D2); int NS,DS;... NS=(N1*D2+N2*D1); DS=D1*D2; Scrivere un programma C che - Acquisisca da tastiera 2 frazioni - Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.)
int d; d = (DS<NS ? DS : NS); for ( ; d>=1 ; d--) if ((NS % d == 0) && (DS % d == 0)) break; Scrivere un programma C che - Acquisisca da tastiera 2 frazioni - Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) Per ridurre ai minimi termini ci basta dividere il numeratore N e il denominatore D per il MCD(N,D) Per determinare il MCD(N,D) posso seguire questa procedura: a) imposto d=min(N,D) b) provo a dividere N e D per d. c) Se N e D sono divisibili per d allora d è il MCD e termino. Altrimenti decremento d e ripeto il controllo b) d) Fine. START d=min(D,N) D e N sono divisibili per d ? d=d-1 d è il MCD NO SI
printf("Somma (ridotta): %d/%d\n",NS/d,DS/d); Scrivere un programma C che - Acquisisca da tastiera 2 frazioni - Stampi a video la somma delle frazioni ridotta ai minimi termini. (Suggerimento: Per ridurre una frazione ai minimi termini per prima cosa calcolare il MCD.) La soluzione definitiva è la seguente #include int main() { int N1,N2,D1,D2; int NS,DS, d; printf("1^ frazione A/B: "); // INPUT scanf("%d/%d",&N1,&D1); printf("2^ frazione C/D: "); scanf("%d/%d",&N2,&D2); NS=(N1*D2+N2*D1); // SOMMA DS=D1*D2; d=(DS<NS ? DS : NS); // MCD for ( ; d>=1 ; d--) if ((NS % d == 0) && (DS % d == 0)) break; printf("Somma (ridotta): %d/%d\n",NS/d,DS/d); system("pause"); return(0); }