![Page 1: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/1.jpg)
Piero Scotto - C14 1
C14 #3 Soluzioni e commenti
esercizi 1 e 2
![Page 2: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/2.jpg)
Piero Scotto - C14 2
Finalità del corso
Finalità del corso
Finalità del corso
Finalità del corso
Finalità del corso
![Page 3: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/3.jpg)
Piero Scotto - C14 3
Esercizio 1. Usando i programmi descritti a lezione scrivere un programma in C che calcoli la media aritmetica dei voti di uno studente, supponendo che i voti siano 9.
![Page 4: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/4.jpg)
Piero Scotto - C14 4
/* Viene calcolata la media di 9 voti */#include <stdio.h>int main(void){float a, b, c, d, e, f, g, h, i, media; scanf("%f %f %f %f %f %f %f %f %f",&a,&b,&c,&d,&e,&f,&g,&h,&i);
media = (a + b + c + d + e + f + g + h + i)/9; printf("La media dei valori %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f e' %.2f ",a,b,c,d,e,f,g,h,i, media) ;
return 0;}
![Page 5: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/5.jpg)
Piero Scotto - C14 5
Possiamo migliorare il programma e far sì che onlinecompiler produca un eseguibile che interagisca con l’utente.
![Page 6: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/6.jpg)
Piero Scotto - C14 6
/* Viene calcolata la media di 9 voti */#include <stdio.h>int main(void){float a, b, c, d, e, f, g, h, i, media, pausa; printf(" Inserire separati da spazio i nove voti: ");scanf("%f %f %f %f %f %f %f %f %f",&a,&b,&c,&d,&e,&f,&g,&h,&i);
media = (a + b + c + d + e + f + g + h + i)/9; printf("La media dei valori %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f e' %.2f ",a,b,c,d,e,f,g,h,i, media) ;scanf("%f",&pausa);
return 0;} /* i commenti non ci sono per motivi di spazio */
![Page 7: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/7.jpg)
Piero Scotto - C14 7
![Page 8: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/8.jpg)
Piero Scotto - C14 8
Esercizio2. Scrivere un programma che calcoli l’area del trapezio. L’utente inserirà base maggiore, base minore, altezza
![Page 9: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/9.jpg)
Piero Scotto - C14 9
/* Calcolo area del trapezio. Fornire basi e altezza */#include <stdio.h> int main(void){float B, b, h ,area, pausa ; /* variabili */printf("Calcolo dell'area del trapezio. Inserire le basi e l'altezza: ");scanf("%f %f %f", &B, &b, &h); /* chiedo i numeri da input e li assegno alle variabili */area = ( B + b ) / 2 *( h ) ; /* calcolo il valore dell'area */printf("L'area del trapezio con base maggiore %.2f cm base minore %.2f cm altezza %.2f cm e': Area= %.2f cm^2 ", B,b,h,area );printf(" Digitare 0 e invio per finire ");scanf("%f", &pausa); /* il solito trucco per vedere il risultato */return 0;}
![Page 10: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/10.jpg)
Piero Scotto - C14 10
Come si vede il programma non è in grado di distinguere la base maggiore da quella minore.Possiamo istruirlo perché lo faccia.
Basterà confrontare i due valori e poi mettere il più grande in B (base maggiore) e il più piccolo in b (base minore).
![Page 11: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/11.jpg)
Piero Scotto - C14 11
Variabile di scambio “swap”
Scriviamo un programma che dati due numeri passati da input, metta il maggiore in B e il minore in b. Poi stampi il risultato.Partiamo con un semplice programma che legge e stampa i numeri.#include <stdio.h> int main(void){float B, b; /* variabili */printf("Inserire i due numeri: ");scanf("%f %f",&B,&b);printf("B=%f b=%f",B,b);return 0;}
![Page 12: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/12.jpg)
Piero Scotto - C14 12
Prima di stampare occorre confrontare B e bUserò il costrutto ifIf (b>B) { swap=b; b=B; B=swap; } Tra parentesi graffe il blocco che viene eseguito se la condizione (b>B) è vera.
Ad es. se b=6, B=2, b>B quindi la condizione dell’if è vera e avremo l’esecuzione del blocco{swap = 6; b = 2; B = 6; }
swap è la variabile temporanea (a volte è indicata come tmp) che mi serve per lo scambio.
![Page 13: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/13.jpg)
Piero Scotto - C14 13
#include <stdio.h> int main(void){float B, b, swap; /* variabili */printf("Inserire i due numeri: ");scanf("%f %f",&B,&b);if (b>B) { swap=b; b=B; B=swap; }printf("B=%f b=%f",B,b);return 0;}
![Page 14: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/14.jpg)
Piero Scotto - C14 14
/* Calcolo dell’area del trapezio. Fornire basi e altezza */#include <stdio.h> int main(void){float B, b, h ,area, pausa, swap ; /* variabili */printf("Calcolo dell'area del trapezio. Inserire le basi e l'altezza: ");scanf("%f %f %f", &B, &b, &h); if (b>B) { swap=b; b=B; B=swap; }area = ( B + b ) / 2 *( h ) ; /* calcolo il valore dell'area */printf("L'area del trapezio con base maggiore %.2f cm base minore %.2f cm altezza %.2f cm e': Area= %.2f cm^2 ", B,b,h,area );printf(" Digitare 0 e invio per finire ");scanf("%f", &pausa); return 0;}
![Page 15: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/15.jpg)
Piero Scotto - C14 15
L’istruzione if else
![Page 16: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/16.jpg)
Piero Scotto - C14 16
#include <stdio.h> int main(void){float B, b, swap; /* variabili */printf("Inserire i due numeri: ");scanf("%f %f",&B,&b);if (b>B) { swap=b; b=B; B=swap; }printf("B=%f b=%f",B,b);return 0;}
![Page 17: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/17.jpg)
Piero Scotto - C14 17
![Page 18: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/18.jpg)
Piero Scotto - C14 18
Se si verifica la divisione per 0 il risultato è indefinito!Occorre prevenire questo rischio.If (a==0) {printf(“Equazione non possibile”);} else
#include <stdio.h> int main(void){float a, b, x; /* variabili */printf("Programma per risolvere equazioni del tipo ax + b = 0 Inserire a e b : ");scanf("%f %f",&a,&b);if (a==0) {printf("Equazione non possibile");} else {x = -(b/a); printf("Soluzione x= %f",x);}return 0;}
![Page 19: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/19.jpg)
Piero Scotto - C14 19
![Page 20: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/20.jpg)
Piero Scotto - C14 20
![Page 21: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/21.jpg)
Piero Scotto - C14 21
Esercizio 3. Scrivere un programma per risolvere equazioni del tipo ax + b = 0, cioè di primo grado.
Pensiamo di ottenere a, b da input e risolvere ricavando x.
![Page 22: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/22.jpg)
Piero Scotto - C14 22
#include <stdio.h> int main(void){float a, b, x; /* variabili */printf("Programma per risolvere equazioni del tipo ax + b = 0 Inserire a e b : ");scanf("%f %f",&a,&b);x = -(b/a); /* soluzione dell’equazione di primo grado */printf("Soluzione x= %f",x);return 0;}
Questo programma presenta un potenziale rischio. Quale?
![Page 23: Piero Scotto - C141 C14 #3 Soluzioni e commenti esercizi 1 e 2](https://reader036.vdocuments.site/reader036/viewer/2022070313/5542eb69497959361e8d4d98/html5/thumbnails/23.jpg)
Piero Scotto - C14 23
Se a=0, si verifica la divisione per 0 e il risultato è indefinito!Occorre prevenire questo rischio.If (a==0) {printf(“Equazione non possibile”);} else …
#include <stdio.h> int main(void){float a, b, x; /* variabili */printf("Programma per risolvere equazioni del tipo ax + b = 0 Inserire a e b : ");scanf("%f %f",&a,&b);if (a==0) {printf("Equazione non possibile");} else {x = -(b/a); printf("Soluzione x= %f",x);}return 0;}