#include #include #include #include using namespace std; /* Statistique des tailles dans un fichier (exprimees en metres) */ int main(){ const int N = 300; /* On va dire que toutes les tailles inferieures a 0 cm sont egales a 0, et toutes les tailles superieures a 299 cm egales a 299. De cette facon on a un tableau de taille bien determinee, meme si on ne connait pas encore les valeurs explicites, ni leur nombre, et on n'aura pas besoin de lire le fichier deux fois. */ int* tailles = (int*)malloc(N * sizeof(int)); int c, i; double x, xmin, xmax, s, s2, moy, ectyp; fstream fich; s = 0.; s2 = 0.; c = 0; xmin = (N-1)/100.; xmax = 0.; for (i = 0; i < N; i++) tailles[i] = 0; fich.open("fich_tailles.dat", ios::in); while (fich >> x){ c++; cout << c << " : " << x << endl; if (x < 0.) x = 0.; if (x > (N-1)/100.) x = (N-1)/100.; if (x < xmin) xmin = x; if (x > xmax) xmax = x; s += x; s2 += x*x; tailles[(int)floor(x*100)]++; } fich.close(); cout << "Nombre total de tailles : " << c << endl; if (c > 0){ cout << "Valeur minimale : " << xmin << " m" << endl; cout << "Valeur maximale : " << xmax << " m" << endl; moy = s/c; cout << "Valeur moyenne : " << moy << " m" << endl; ectyp = sqrt(s2/c - moy*moy); cout << "Ecart type : " << ectyp << " m" << endl; cout << "taille < 1 cm : " << tailles[0] << endl; for (i = 1; i < N-1; i++) cout << i << " cm <= taille < " << i+1 << " cm : " << tailles[i] << endl; cout << "taille >= " << N-1 << " cm : " << tailles[N-1] << endl; } free(tailles); return 0; }