Media Aritmetica
Questo programma in c, vi consentirà di inserire tutti i numeri che volete finchè non verrà premuto 0 e, di farne poi, la media aritmetica.
La versione 1 è la più semplice e intuibile, contiene infatti il ciclo Do – While. La versione 2, presenta già dei controlli più complicati, come per l’inserimento di un carattere invece che di un numero.
N.B: La versione 2 risolve il problema del loop infinito quando si immette un carattere al posto di un numero! Prestare molta attenzione!
v 1.0
#include <stdio.h> int main(void) { float n, espr, media; int i; printf("Benvenuto nel calcolo della media aritmetica! \n"); printf("Il sistema ti chiedera' sempre un nuovo numero \n"); printf("finche' non verra' inserito il valore: 0. \n\n"); espr = 0; i = 0; do { printf("Inserisci il valore: "); scanf("%f", &n); espr = espr + n; i = i++; } while (n != 0); // fine do media = espr / (i - 1); i = i - 1; printf("\n"); printf("La media artimetica tra i %i valori e': %.2f", i, media); printf("\n\n"); return 0; }
v 2.0
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { float n, espr, media, b; int a; //lo uso come controllo se l'imput è andato a buon fine. se è 0 allora errore (cioè ho messo un tipo di input diverso da quello che richiede quel scanf) se è 1 allora va tutto bene int result, i; i = 0; espr = 0; printf("Benvenuto nel calcolo della media aritmetica! \n"); printf("Il sistema ti chiedera' sempre un nuovo numero \n"); printf("finche' non verra' inserito il valore: 0. \n\n"); printf("Inserisci il valore: "); a = scanf("%f", &n); //chiedo all'utente un numero, lo inserisco in n, in più mi salvo in a se l'input è andato a buon fine while(n != 0) { //finche l'utente non inserisce 0 while (a != 1) { //l'input era andato a buon fine?? controllo, se non era andato a buon fine: richiedo fflush(stdin); //cancello gli eventuali tasti premuti nella tastiera (IMPORTANTE: E' QUELLO CHE MI EVITA IL LOOP INFINITO) printf("Errore! Devi inserire un valore valido!: "); a = scanf("%f", &n); //richiedo l'input e mi salvo se è andato a buon fine } espr += n; // N.B. scrivere += significa come esp = esp + n è una forma più compatta. posso usare anche gli altri operatori i++; //N.B. scrivere i++ equivale a i= i+1 se fosse i= i -1 allora scrivo i-- printf("\nInserisci il valore: "); //chiedo un'altro valore a = scanf("%f", &n); } // fine ciclo while media = espr / (i); printf("\nLa media artimetica tra i %i valori e': %.2f", i, media); printf("\n\n"); system("PAUSE"); printf("\n\ncopyright - caprioli.info/progression/\n"); return 0; }
v 3.0 universitaria (in array – vettori)
#include <stdio.h> int main(void) { int voti[31] = { 0 }; int voto; int pos; int num, den; do { printf("voto: "); scanf("%i", &voto); if (voto >= 0 && voto <= 30) voti[voto]++; } while (voto >= 0); for (pos = 0; pos < 31; pos++) printf("%i ", voti[pos]); printf("\n"); for (voto = 0; voto < 31; voto++) if (voti[voto] > 0) printf("%i student%c ha%s preso %i %s\n", voti[voto], voti[voto] == 1 ? 'e' : 'i', voti[voto] == 1 ? "" : "nno", voto, voto >= 18 ? "" : "(insufficiente)"); // calcoliamo la media dei voti num = den = 0; for (voto = 0; voto < 31; voto++) { num += voti[voto] * voto; den += voti[voto]; } printf("La media dei voti e': %g\n", ((double) num) / den); return 0; }
Per ogni dubbio, non esitate a commentare!!
No trackbacks yet.