Università degli Studi di Brescia
Fondamenti di Programmazione
Docente: Alessandro Saetti
A.A. 2012/2013
ESERCITAZIONE STRUTTURE DI
CONTROLLO E VETTORI
Università degli Studi di Brescia
A.A. 2012/2013
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 <stdio.h>
#include <stdlib.h>
int main()
{
// . . .
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
system("pause");
return(0);
}
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);
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.)
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 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.)
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)
int d;
d = (DS<NS ? DS : NS);
for ( ; d>=1 ; d--)
if ((NS % d == 0) && (DS % d == 0))
break;
D e N sono
divisibili per d ?
NO
d=d-1
d è il MCD
SI
Scrivere un programma C che
printf("Somma (ridotta): %d/%d\n",NS/d,DS/d);
- 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
La soluzione definitiva è la seguente
prima cosa calcolare il MCD.)
#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);
}
Scarica

Eser 1.3