G. Amodeo,
C. Gaibisso
Programmazione di Calcolatori
Le strutture di controllo
Soluzione agli esercizi
proposti
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
1
G. Amodeo,
C. Gaibisso
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
max  -1
val
Descrizione variabili:
val:
max:
memorizza il
valore
corrente della
sequenza
memorizza il
massimo
corrente
true
val < 0
max
End
false
false
val > max
true
max  val
Soluzione in: EsProposti\Lezione_XIII\Esercizio_1.c
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
2
G. Amodeo,
C. Gaibisso
Esercizio 1: il codice
// 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 negativo
int 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 {
// acquisizione
printf("\nProssimo elemento della sequenza:");
scanf("%d", &val);
// calcolo del massimo corrente
if (val > max)
max = val;
} while (val >= 0);
// restituzione del massimo
return(max);
};
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
3
G. Amodeo,
C. Gaibisso
Esercizio 1: il codice
// chiamante
int main ()
{
printf("\nIl massimo della sequenza e': %d", MaxOfSeq());
return(1);
}
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
4
G. Amodeo,
C. Gaibisso
Esercizio 2
Calcolare il minimo comune
multiplo tra 2 interi positivi
Start
Nome: MCM
Variabili: int A, B, max, mcm, count
A, B
Descrizione variabili:
memorizza il
primo intero
B:
memorizza il
secondo intero
max: memorizza il
massimo tra i
due interi
mcm: memorizza il
candidato
corrente a
minimo comune
multiplo
count: moltiplicato per
max genera il
prossimo
candidato a
minimo comune
multiplo
count  2
A:
max  A
max  B
A>B
true
false
mcm  max
mcm  max*count
cont  count+1
false
Soluzione in: EsProposti\Lezione_XIII\Esercizio_2.c
mcm % A = 0
and
mcm % B = 0
true
mcm
End
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
5
G. Amodeo,
C. Gaibisso
Esercizio 2: il codice
// sorgente: EsProposti\Lezione_XIII\Esercizio_2.c
// direttive per il preprocessore
#include <stdio.h>
// funzione che calcola il massimo tra due interi positivi
int massimo (int val1, int val2)
{
if (val1 > val2)
return(val1);
else
return(val2);
};
// funzione che calcola il minimo comune multiplo tra 2 interi positivi
int 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);
};
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
6
G. Amodeo,
C. Gaibisso
Esercizio 2: il codice
// chiamante
int 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);
}
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
7
G. Amodeo,
C. Gaibisso
Esercizio 3
Start
Nome: MCD
Variabili: int A, B, min, mcd, count
Calcolare il massimo comun
divisore tra 2 interi positivi
A, B
Descrizione variabili:
memorizza il
primo intero
B:
memorizza il
secondo intero
min: memorizza il
minimo tra i due
interi
count: memorizza il
candidato
corrente a
massimo comun
divisore
mcd: memorizza
l’ultimo divisore
comune
individuato
mcd  1
count  1
A:
false
true
min  A
min  B
A>B
true
count > min
mcd
false
End
count  count+1
false
A % count = 0
and
B % count = 0
true
mcd  count
Soluzione in: EsProposti\Lezione_XIII\Esercizio_3.c
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
8
G. Amodeo,
C. Gaibisso
Esercizio 3: il codice
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);
};
// chiamante
int 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);
}
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
9
G. Amodeo,
C. Gaibisso
Esercizio 3: il codice
// sorgente: EsProposti\Lezione_XIII\Esercizio_3.c
// direttive per il preprocessore
#include <stdio.h>
// funzione che calcola il minimo tra due interi positivi
int minimo (int val1, int val2)
{
if (val1 > val2)
return(val2);
else
return(val1);
};
// funzione che calcola il massimo comun divisore tra 2 interi positivi
int 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 …
Programmazione di Calcolatori: Le strutture di controllo - soluzione agli esercizi
10
Scarica

Esercizio 1 - Informatica