Esercitazione di laboratorio n.2
Variabili, espressioni, operatori, overflow, funzioni
NOTE
• Es. 1
• La funzione di lettura deve restituire il valore letto:
numero_letto = leggi_num_in_intervallo ();
• Può essere resa più generale:
numero_letto = leggi_num_in_intervallo (-50, 50);
int main() {
...
while (cnt < n) {
/* lettura numero */
scanf (...
if (controlla_numero (num_letto)==FALSO) {
/* non incremento il contatore */
...
NO: mescola l’algoritmo della media con il ciclo per la lettura.
È sbagliata la scomposizione in
sottoproblemi.
int main() {
...
while (cnt < lunghezza_sequenza) {
/* lettura numero */
numero = leggi_in_intervallo (-50, 50);
...
int leggi_in_intervallo (int min, int max) {
...
SÌ: delego alla funzione
leggi_in_intervallo la
lettura, il controllo, e la
ripetizione in caso di
numero non compreso
nell’intervallo voluto.
int leggi_in_intervallo (int min, int max) {
int num_letto;
printf (...
scanf (...
while (num_letto non accettabile) {
printf (...numero non valido, inserire di nuovo...
scanf (...
}
return num_letto ; }
Possibile implementazione
(alternativa: do...while)
int main() {
...
while (cnt < lunghezza_sequenza) {
numero = leggi_in_intervallo (-50, 50);
...
int leggi_in_intervallo (int min, int max) {
int num_letto; /* variabile locale per la lettura */
printf (...
scanf (...
while (num_letto non accettabile) {
printf (... Num non valido, inserire di nuovo...
scanf (...
}
return num_letto; /* restituisce il valore al programma chiamante */
}