AD

Come calcolare la media aritmetica tra N numeri in C

Nella seguente pagina viene mostrato un esercizio di come creare un programma in C, in grado di calcolare la media aritmetica tra N numeri. In particolare vengono mostrati due programmi diversi in grado di calcolare la media di diversi numeri, dove il primo accetta in input da tastiera solamente due valori, mentre il secondo il programma è in grado di accettare fino ad N elementi.

In entrambi gli esercizi dobbiamo fare uso di particolari funzioni per poter ricevere in input i valori dell’utente. Per fare questo usiamo la funzione scanf che ci permette di leggere un valore da tastiera e di immagazzinarlo all’interno di un variabile.

Letti tutti i valori basta applicare la definizione di media aritmetica, o media, che corrisponde alla somma di tutti i valori diviso il numero di elementi considerati. Chiaramente in linguaggi di programmazione come il C bisogna fare molta attenzione al tipo di dato delle variabili utilizzate quando si effettua l’operazione di divisione, in quanto si potrebbe andare incontro ad arrotondamenti non desiderati.

Per evitare questo tipo di problema faremo uso di variabili di tipo float, cioè numeri a virgola mobile, che eviteranno troncamenti non voluti.

Calcolare la media tra due numeri in C

Il seguente esercizio richiede di creare un programma in grado di effettuare la media tra due numeri in C. Come accennato prima, dobbiamo innanzitutto leggere i due valori da tastiera utilizzando, per esempio, la funzione scanf, tramite lo specificatore di formato %f, ed inserire i valori letti in due variabili, nel nostro caso a e b.

Oltre a queste variabili dobbiamo dichiarare un’altra variabile, nel nostro caso "media", sempre di tipo float, in cui immagazziniamo il valore ottenuto dal calcolo della media aritmetica, effettuando la somma dei valori inseriti e dividendo il numero ottenuto per due. A questo punto non resta che stampare a schermo il valore calcolato utilizzando per esempio la funzione printf.

Nota: quando si vuole stampare una variabile di tipo float, per evitare di stampare troppi numeri dopo la virgola si può utilizzare lo specificatore di formato %.2f, che specifica alla funzione di printf di stampare solamente i primi due numeri dopo la virgola.

#include <stdio.h> int main(){     float a, b, media;     printf("Inserisci il primo valore: ");     scanf("%f", &a);     printf("Inserisci il secondo valore: ");     scanf("%f", &b);     media = (a + b) / 2;     printf("Media: %.2f", media);     return 0; }

Calcolare la media di N numeri in C

Nel seguente esercizio, invece, creiamo un programma in C in grado di calcolare la media aritmetica di N numeri inseriti da tastiera, dove N rappresenta una costante definita all’interno del programma e sta ad indicare il numero di valori che il programma è in grado di accettare.

In questo caso per gestire N valori, facciamo uso del ciclo while, che ci permette di leggere dall’input un numero alla volta fino a che non viene raggiunto il valore N.

Per eseguire in maniera corretta l’esercizio abbiamo bisogno di più variabili. In particolare, abbiamo bisogno di una variabile (val) in cui ad ogni iterazione viene immagazzinato il valore letto da tastiera, una variabile (somma) in cui ad ogni iterazione sommiamo il valore letto (val), un’altra variabile che conterrà il risultato della media aritmetica (media) e una variabile intera per segnare i numeri delle iterazione del ciclo while, per eseguire N il ciclo e per evitare cicli infiniti.

Chiaramente al termine dell’esecuzione del ciclo while, all’interno della variabile "somma" sarà contenuta la somma di tutti gli N valori inseriti dall’utente, che verrà utilizzata per calcolare la media, infatti basta semplicemente dividere la somma per N.

#include <stdio.h> #define N 10 int main(){     float val, somma, media;     int i;     somma = 0;     i = 0;     while(i < N){         printf("Inserisci valore: ");         scanf("%f", &val);         somma += val;         i++;     }     media = (somma) / N;     printf("Media: %.2f", media);     return 0; }