Esercizio: il libretto degli esami
Si vuole scrivere un programma che, dati in input i voti di più esami e i relativi crediti, calcoli la media ponderata dei voti e la visualizzi a video.
Quando il programma viene eseguito deve chiedere all’utente di inserire il voto di un certo esame e il relativo numero di crediti associato. Una volta inseriti tutti i voti e i crediti, il programma deve calcolare la media ponderata e visualizzarla a video.
Opzionale:
- Provare a visualizzare anche la media aritmetica dei voti;
- Visualizzare anche l’elenco dei voti e dei crediti inseriti.
- Prova a stampare il voto con 2 cifre decimali, ad esempio
27.11
(per fare questo bisogna cambiare il tipo di dato usato per memorizzare la media e usare il type casting durante la divisione).
La media ponderata si calcola come la somma dei prodotti tra ciascun voto e i relativi crediti, diviso la somma dei crediti. Formalmente:
\[ \text{media} = \frac{\sum_{i=1}^{n} voto_i \cdot crediti_i}{\sum_{i=1}^{n} crediti_i} \] dove \(voto_i\) è il voto dell’esame \(i\)-esimo e \(crediti_i\) è il numero di crediti dell’esame \(i\)-esimo.
Ad esempio, se si hanno tre esami con voti 30, 28 e 25 e i rispettivi crediti sono 6, 9 e 12, la media ponderata è: \[ \frac{30 \cdot 6 + 28 \cdot 9 + 25 \cdot 12}{6 + 9 + 12} = \frac{180 + 252 + 300}{27} = \frac{732}{27} \approx 27.11 \]
Esempio di main:
#include <stdio.h>
int main(void)
{
int voto_analisi1, voto_algebra_lineare, voto_java;
int crediti_analisi1, crediti_algebra_lineare, crediti_java;
int media_ponderata;
// TODO: Chiedere all'utente i voti e i crediti dei tre esami
// TODO: Calcolare la media ponderata
("La media ponderata è: %d\n", media_ponderata);
printf}
#include <stdio.h>
int main(void)
{
int voto_analisi1, voto_algebra_lineare, voto_java;
int crediti_analisi1, crediti_algebra_lineare, crediti_java;
int media_ponderata;
("Inserisci il volto di analisi 1 e i crediti: ");
printf("%d %d", &voto_analisi1, &crediti_analisi1);
scanf
("Inserisci il volto di algebra lineare e i crediti: ");
printf("%d %d", &voto_algebra_lineare, &crediti_algebra_lineare);
scanf
("Inserisci il volto di introduzione alla programmazione e i crediti: ");
printf("%d %d", &voto_java, &crediti_java);
scanf
int numeratore, denominatore;
=
numeratore * crediti_analisi1 + voto_algebra_lineare * crediti_algebra_lineare + voto_java * crediti_java;
voto_analisi1 = crediti_analisi1 + crediti_algebra_lineare + crediti_java;
denominatore = numeratore / denominatore;
media_ponderata
("La media ponderata è: %d\n", media_ponderata);
printf}