La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Soluzioni e commenti esercizi 1 e 2

Presentazioni simili


Presentazione sul tema: "Soluzioni e commenti esercizi 1 e 2"— Transcript della presentazione:

1 Soluzioni e commenti esercizi 1 e 2
Piero Scotto - C14

2 Finalità del corso Finalità del corso Finalità del corso
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. 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; } Piero Scotto - C14

5 Possiamo migliorare il programma e far sì che onlinecompiler produca un eseguibile che interagisca con l’utente. 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 */ Piero Scotto - C14

7 Piero Scotto - C14

8 Esercizio2. Scrivere un programma che calcoli l’area del trapezio
Esercizio2. Scrivere un programma che calcoli l’area del trapezio. L’utente inserirà base maggiore, base minore, altezza 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; } Piero Scotto - C14

10 Possiamo istruirlo perché lo faccia.
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). 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; } Piero Scotto - C14

12 Prima di stampare occorre confrontare B e b Userò il costrutto if
If (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. 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; } 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; } Piero Scotto - C14

15 L’istruzione if else 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; } Piero Scotto - C14

17 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; } Piero Scotto - C14

19 Piero Scotto - C14

20 Piero Scotto - C14

21 Pensiamo di ottenere a, b da input e risolvere ricavando x.
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. 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? 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; } Piero Scotto - C14


Scaricare ppt "Soluzioni e commenti esercizi 1 e 2"

Presentazioni simili


Annunci Google