1 / 23

C14 #3 Soluzioni e commenti esercizi 1 e 2

C14 #3 Soluzioni e commenti esercizi 1 e 2. Finalità del corso. Finalità del corso. Finalità del corso. Finalità del corso. Finalità del corso.

senta
Download Presentation

C14 #3 Soluzioni e commenti esercizi 1 e 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C14 #3 Soluzioni e commenti esercizi 1 e 2 Piero Scotto - C14

  2. Finalità del corso Finalità del corso 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> intmain(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> intmain(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. L’utente inserirà base maggiore, base minore, altezza Piero Scotto - C14

  9. /* Calcolo area del trapezio. Fornire basi e altezza */ #include <stdio.h> intmain(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. 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> intmain(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> intmain(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> intmain(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> intmain(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> intmain(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. 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> intmain(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> intmain(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

More Related