Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro...

5
Università degli Studi di Brescia Fondamenti di Programmazion Docente: Alessandro Saetti A.A. 2012/2013 Università degli Studi di Brescia ESERCITAZIONE STRUTTURE DI CONTROLLO E VETTORI

Transcript of Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro...

Page 1: Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.

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

Page 2: Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.

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.)

Page 3: Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.

#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.)

Page 4: Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.

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

Page 5: Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.

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); }