Salve a tutti. La mia intenzione e' quella di scrivere un programma che, inserite un certo numero di misure, ti restituisce:
1) il numero massimo
2) il numero minimo
3) la dispersione (massimo-minimo)
4) la somma dei numeri inseriti
5) la media dei numeri inseriti
6) l'incertezza relativa
7) l'incertezza percentuale
Il programma riesce a calcolarmi il numero massimo e minimo, la dispersione e la somma totale dei numeri. Il problema sorge con la media aritmetica, poichè quando faccio andare il programma mi esce scritto "la media aritmetica e' 1.#INF". Ho cercato a cosa si poteva riferire questo tipo di errore ed ho trovato che è identificabile con la divisione per zero. In effetti il mio N, che è il numero di misure che l'utente vuole inserire, va man mano svuotandosi mentre si inseriscono le misure, e quindi il programma alla fine trova N=0 e non può darmi la media. Il problema è che senza la media non posso calcolare tutte le altre cose
Cosa posso fare ? Spero di essere stato abbastanza chiaro.
Questo è il codice che ho scritto fin'ora:
codice:
#include <stdio.h>
#include <stdlib.h>
int main(){
float N; // indica il numero di misure che l'utente vuole inserire
float numero; // indica le misure man mano inserite dall'utente
float MAX, MIN; // MAX e MIN indicano il numero massimo e minimo inseriti
float totale; // indica la somma dei numeri inseriti
float media; // media dei numeri inseriti
float dispersione; // dispersione --> (max-min)
float incertrel; // incertezza relativa --> dispersione/media
float incertperc; // incertezza percentuale --> incertezza relativa * 100
printf("Quante misure vuoi inserire? ");
scanf("%f", &N);
if (N<=0){
printf("Errore. Il numero inserito non e' positivo");
} else {
printf("Inserisci una misura: ");
scanf("%f", &numero);
N=N-1;
MAX=numero;
MIN=numero;
totale=numero;
while (N>0){
printf("Inserisci una misura: ");
scanf("%f", &numero);
if (numero>MAX){
MAX=numero;
} else if (numero<MIN){
MIN=numero;
}
N=N-1;
totale=totale+numero;
}
printf("Il numero massimo inserito e' %.2f, il numero minimo e' %.2f.\n", MAX, MIN);
dispersione=MAX-MIN;
printf("La somma totale dei numero e' %.4f. La dispersione e' %.2f.\n", totale, dispersione);
media=totale/N;
printf("La media aritmetica e' %.4f.\n", media);
system("PAUSE");
}
}