Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.