Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro...
-
Upload
fiore-casati -
Category
Documents
-
view
217 -
download
0
Transcript of Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro...
Università degli Studi di Brescia
A.A. 2012/2013
Fondamenti di ProgrammazioneDocente: Alessandro Saetti
A.A. 2012/2013
Università degli Studi di Brescia
ESERCITAZIONE STRUTTURE DI CONTROLLO E VETTORI
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 perprima cosa calcolare il MCD.)
#include <stdio.h>#include <stdlib.h>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 perprima 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 perprima 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 perprima 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 perprima 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 perprima cosa calcolare il MCD.) La soluzione definitiva è la seguente
#include <stdio.h>#include <stdlib.h>
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); }