programmazione di calcolatori

10
G. Amodeo, C. Gaibisso Programmazione di Programmazione di Calcolatori Calcolatori Le strutture di controllo Soluzione agli esercizi proposti Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 1

Upload: eden-richardson

Post on 30-Dec-2015

30 views

Category:

Documents


0 download

DESCRIPTION

Programmazione di Calcolatori. Le strutture di controllo Soluzione agli esercizi proposti. Esercizio 1: diagramma di flusso. Calcolare il massimo di una sequenza non vuota di numeri interi positivi terminata da un intero negativo. Start Nome: MaxOfSeq Variabili: int val, max. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso Programmazione di Programmazione di

CalcolatoriCalcolatori

Le strutture di controlloSoluzione agli esercizi

proposti

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 1

Page 2: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso Esercizio 1: diagramma di Esercizio 1: diagramma di

flussoflusso

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 2

Calcolare il massimo di una sequenza non vuota di numeri interi positivi terminata da un intero

negativo

StartNome: MaxOfSeqVariabili: int val, max

val

val < 0

false

true

max End

val > max

true

max val

false

max -1

Descrizione variabili:

val: memorizza il valore corrente della sequenzamax: memorizza il massimo corrente

Soluzione in: EsProposti\Lezione_XIII\Esercizio_1.c

Page 3: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso

Esercizio 1: il codiceEsercizio 1: il codice

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 3

// sorgente: EsProposti\Lezione_XIII\Esercizio_1.c// direttive per il preprocessore#include <stdio.h>// Funzione che calcola il massimo di una sequenza non vuota di numeri interi// positivi terminata da un intero negativoint MaxOfSeq() { // definizione delle variabili per il valore corrente della sequenza e il // corrispondente massimo int val, max; // inizializzazione del massimo corrente max = -1; // ciclo di acquisizione della sequenza e calcolo del massimo corrente do {// acquisizioneprintf("\nProssimo elemento della sequenza:");scanf("%d", &val);// calcolo del massimo correnteif (val > max) max = val;} while (val >= 0); // restituzione del massimo return(max); };

Page 4: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso

Esercizio 1: il codiceEsercizio 1: il codice

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 4

// chiamanteint main () { printf("\nIl massimo della sequenza e': %d", MaxOfSeq()); return(1); }

Page 5: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso

Esercizio 2Esercizio 2

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 5

Calcolare il minimo comune multiplo tra 2

interi positivi

Soluzione in: EsProposti\Lezione_XIII\Esercizio_2.c

Descrizione variabili:

A: memorizza il primo interoB: memorizza il secondo interomax: memorizza il massimo tra i due interimcm: memorizza il candidato corrente a minimo comune multiplocount: moltiplicato per max genera il prossimo candidato a minimo comune multiplo

max A

StartNome: MCMVariabili: int A, B, max, mcm, count

falseA > B

true

A, B

mcm

max B

mcm % A = 0and

mcm % B = 0

End

mcm max*count

cont count+1

count 2

mcm max

false

true

Page 6: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso

Esercizio 2: il codiceEsercizio 2: il codice

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 6

// sorgente: EsProposti\Lezione_XIII\Esercizio_2.c// direttive per il preprocessore#include <stdio.h>// funzione che calcola il massimo tra due interi positiviint massimo (int val1, int val2) { if (val1 > val2) return(val1); else return(val2); };// funzione che calcola il minimo comune multiplo tra 2 interi positiviint MCM(int A, int B) { // definizione della variabile per il massimo tra i due valori di input e per // per il candidato corrente a minimo comune multiplo int max; int mcm; // definizione della variabile che moltiplicata per il massimo tra i due valori di // input genera il prossimo candidato a minimo comune multiplo int count; // inizializzazione delle variabili count = 2; max = massimo(A, B); mcm = max; // verifica se il candidato corrente e' il minimo comune multiplo while (!((mcm%A == 0) && (mcm%B == 0))) // aggiorna il valore del candidato corrente mcm = max * count++; // restituisce il minimo comune multiplo return(mcm); };

Page 7: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso

Esercizio 2: il codiceEsercizio 2: il codice

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 7

// chiamanteint main () { // definizione delle due variabili di input int x, y; // acquisizione delle variabili di input printf("\nPrimo valore? "); scanf("%d", &x); printf("\nSecondo valore? "); scanf("%d", &y); // visualizza il minimo comune multiplo tra le // variabili di input printf("\nIl mcm tra %d e %d e' %d", x, y, MCM(x, y)); return(1); }

Page 8: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso

Esercizio 3Esercizio 3

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 8

Calcolare il massimo comun divisore tra 2 interi

positivi

min A

StartNome: MCDVariabili: int A, B, min, mcd, count

trueA > B

false

A, B

min B

A % count = 0and

B % count = 0

End

count count+1

mcd 1count 1

count > min mcd

mcd count

false

true

true

false

Descrizione variabili:

A: memorizza il primo interoB: memorizza il secondo interomin: memorizza il minimo tra i due intericount: memorizza il candidato corrente a massimo comun divisoremcd: memorizza l’ultimo divisore comune individuato

Soluzione in: EsProposti\Lezione_XIII\Esercizio_3.c

Page 9: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso

Esercizio 3: il codiceEsercizio 3: il codice

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 9

continua …

// testa tutti i valori compresi tra 1 e il minimo tra i valori di input while (count <= min) { // verifica se il candidato corrente è un divisore comune per i valori di input ed // aggiorna il valore della variabile per l'ultimo di tali divisori individuato if ((A%count == 0) && (B%count == 0)) mcd = count; // aggiorna il valore del candidato corrente count++; } // restituisce il massimo comun divisore return(mcd); };// chiamanteint main () { // definizione delle due variabili di input int x, y; // acquisizione delle variabili di input printf("\nPrimo valore? "); scanf("%d", &x); printf("\nSecondo valore? "); scanf("%d", &y); // visualizza il massimo comun divisore tra le variabili di input printf("\nIl mcd tra %d e %d e' %d", x, y, MCD(x, y)); return(1); }

Page 10: Programmazione di Calcolatori

G. Amodeo,C. Gaibisso

Esercizio 3: il codiceEsercizio 3: il codice

Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi 10

// sorgente: EsProposti\Lezione_XIII\Esercizio_3.c// direttive per il preprocessore#include <stdio.h>// funzione che calcola il minimo tra due interi positiviint minimo (int val1, int val2) { if (val1 > val2) return(val2); else return(val1); };// funzione che calcola il massimo comun divisore tra 2 interi positiviint MCD(int A, int B) { // definizione della variabile per il minimo tra i due valori di input int min; // definizione della variabile per il candidato corrente a massimo comun divisore // e per l’ultimo divisore comune individuato per i valori di input individuato int count; int mcd; // inizializzazione delle variabili mcd = count = 1; min = minimo(A, B);

continua …