• Aucun résultat trouvé

CHAPITRE 5 : Quelques statistiques de base CHAPITRE 5 : Quelques statistiques de base

N/A
N/A
Protected

Academic year: 2022

Partager "CHAPITRE 5 : Quelques statistiques de base CHAPITRE 5 : Quelques statistiques de base"

Copied!
1
0
0

Texte intégral

(1)

CHAPITRE 5 : Quelques statistiques de base CHAPITRE 5 : Quelques statistiques de base

A) Compteur

1. but : pour compter le nombre de fois que l'on rencontre un objet (le nombre de personnes traitées, le nombre d'employés dont le salaire hebdomadaire dépasse 1234.50 $, ...)

2. déclaration de type entier : int nbHom, nbFem, nbPers;

3. initialisation : très souvent à zéro, avant et en dehors d'une boucle.

nbHom = 0;

nbFem = 0;

nbPers = 0;

while (!feof(aLire)){

...

...

}

ou une autre boucle do{

...

...

} while (...);

4. incrémentation (ajouter 1 de plus à sa valeur) :

À l'intérieur d'une boucle, au bon endroit. Souvent, on vérifie d'abord une condition avant d'incrémenter la valeur du compteur :

if (sexe == 'f' || sexe == 'F') nbFem++;

if (toupper(sexe) == 'M' && age >= 18) nbHomAdulte++;

5. utilisation de la valeur du compteur

 pour les indices des tableaux (à voir plus tard dans le cours)

 en dehors et à la fin d'une boucle : o pour afficher sa valeur :

printf("Le nombre de femmes traitees : %d\n", nbFem);

o pour le calcul de la moyenne :

if (nbFem > 0)

printf("taille moyenne des femmes : %6.2f mètre\n", somTailleFem / nbFem);

(2)

Exemple 1

On dispose du fichier de type texte du nom "mesures.dta". Chaque ligne du fichier contient les informations relatives à une seule personne :

son numéro dossier, sa taille, son poids, un caractère représentant son sexe.

Exemple des données :

1005 1.47 45.81 F 1006 1.52 44.91 F 1007 1.55 55.34 F 1008 1.57 50.80 F 1009 1.57 51.71 F 1010 1.57 56.25 M 1011 1.63 60.33 F 1012 1.63 61.23 M 1013 1.65 58.51 F 1014 1.68 57.61 F 1015 1.68 64.41 F 1016 1.73 66.22 F 1017 1.73 71.67 M 1018 1.75 76.20 M 1019 1.78 65.32 M 1905 1.80 82.10 M

Écrire un programme qui permet de lire le fichier, de compter et d'afficher les statistiques suivantes :

1) le nombre de personnes traitées (compteur sans condition);

2) le nombre de femmes traitées (compteur avec condition : une femme);

3) le nombre d'hommes dont la taille dépasse 1.76 mètre (compteur avec condition : un homme et sa taille > 1.76).

Solution

#include <stdio.h>

void main() {

const float BORNE = 1.76;

int nbPers, /* le compteur du nombre de personnes lues */

nbFem, /* le compteur du nombre de femmes */

nbHomG; /* le compteur du nombre d'hommes dont la taille dépasse 1.76 mètre */

int numero;

float taille, poids;

char sexe;

FILE *aLire; /* déclaration du fichier à lire */

(3)

/* Initialisations : */

/* du fichier à lire : */

aLire = fopen("mesures.dta", "r"); /* "r" pour "reading"

(lecture) */

/* des compteurs : dans 99% des cas à zéro */

nbPers = 0;

nbFem = 0;

nbHomG = 0;

/* Lecture et ajustement des compteurs : */

while (!feof(aLire)){

/* lecture des données : */

fscanf(aLire,"%d%f%f%c%c%c\n", &numero, &taille, &poids, &sexe, &sexe, &sexe);

/* ajustement des compteurs : */

nbPers++; /* pas de condition */

if (sexe == 'F') nbFem++;

else /*le cas d'un homme car il n'y a pas d'erreurs dans les données */

if (taille > BORNE) nbHomG++;

}

/* fermeture du fichier à lire : fortement conseillé */

fclose(aLire);

/* affichage des compteurs : */

printf("\n\n");

printf("Le nombre de personnes traitees : %3d\n", nbPers);

printf("Le nombre de femmes traitees : %3d\n", nbFem);

printf("Le nombre d'hommes demandes : %3d\n", nbHomG);

printf("Cliquez sur le bouton de fermeture "); } }

Exécution

Le nombre de personnes traitees : 16 Le nombre de femmes traitees : 10 Le nombre d'hommes demandes : 2

(4)

B) Totaliseur

1. but : pour calculer un total (une somme), par exemple le total de la taille des femmes, la somme des poids des enfants traités,

2. déclaration : de type entier (âge total) ou réel (poids total). Exemples :

float taille, somTaille; /* somTaille est un totaliseur, une somme

*/

int age, totAgeEnfant;

3. initialisation : très souvent à zéro, avant et en dehors d'une boucle.

...

somTaille = 0.0;

while (!feof(aLire)){ /* ou une autre boucle */

...

...

}

4. ajustement de sa valeur : à l'intérieur d'une boucle, au bon endroit.

Souvent, on vérifie d'abord une condition et on s'assure d’avoir une valeur courante avant d'ajuster le totaliseur :

...

fscanf(aLire, "%c%f%d\n", &sexe, &taille, &age);

if (toupper(sexe) == 'M') sommeTailleHom += taille;

5. utilisation de la valeur du totaliseur :

Souvent pour le calcul de la moyenne.

(5)

C) Moyenne

1. but : pour calculer la moyenne qui est la somme divisée par le nombre :

tailleMoyenne <---- somTaille / nbPers;

2. traitement

Il faut s'assurer d'avoir un compteur pour le nombre et un totaliseur pour la somme.

Avant de diviser, vérifier si le nombre est supérieur à 0. Le calcul de la moyenne se fait quand on quitte la boucle de répétition. Il est inutile de calculer la moyenne à l'intérieur d'une boucle.

if (nbFem > 0)

printf("taille moyenne des femmes: %6.2f mètre\n", somTailleFem / nbFem);

else

printf("Aucune femme traitée");

Exemple 2

On dispose du même fichier "mesure.dta" qu'à l'exemple 1. Écrire un programme qui permet de lire le fichier, de calculer et d'afficher les statistiques suivantes :

 Le nombre de personnes traitées;

 Le nombre de femmes traitées;

 La taille moyenne;

 Le poids moyen des femmes.

Solution

#include <stdio.h>

#include <ctype.h>

void main() {

int nbPers, /* le compteur du nombre de personnes lues */

nbFem; /* le compteur du nombre de femmes */

int numero;

float taille, poids;

char sexe;

float totTaille, /* somme des tailles */

(6)

totPoidsFem; /* somme des poids des femmes */

FILE *aLire; /* déclaration du fichier à lire */

/* Initialisations : */

/* du fichier à lire : */

aLire = fopen("mesures.dta", "r"); /* "r" pour "reading"

(lecture) */

/* des compteurs et des totaliseurs : 99% des cas par zéro */

nbPers = 0;

nbFem = 0;

totTaille = 0;

totPoidsFem = 0;

/* Lecture et ajustement des compteurs : */

while (!feof(aLire)){

/* lecture des données : */

fscanf(aLire,"%d%f%f%c%c%c\n", &numero, &taille, &poids, &sexe, &sexe, &sexe);

/* ajustement des compteurs : */

nbPers++; /* pas de condition */

totTaille += taille;

if (sexe == 'F'){

nbFem++;

totPoidsFem += poids;

} }

/* fermeture du fichier à lire : fortement conseillé */

fclose(aLire);

/* affichage des compteurs : */

printf("\n\n");

printf("Le nombre de personnes traitees : %3d\n", nbPers);

printf("Le nombre de femmes traitees : %3d\n", nbFem);

/* calcul et affichage des moyennes : */

if (nbPers > 0){

printf("La taille moyenne : %6.2f metre\n\n", totTaille / nbPers);

if (nbFem > 0)

printf("Le poids moyen des femmes : %6.2f kg\n\n", totPoidsFem / nbFem);

else

printf("Aucune femme traitee\n\n");

} else

printf("Aucune personne dans le fichier\n\n");

}

Exécution

(7)

Le nombre de personnes traitees : 16 Le nombre de femmes traitees : 10 La taille moyenne : 1.64 metre Le poids moyen des femmes : 55.57 kg

D) Plus grande valeur dans une série de nombres

1. déclaration : de type entier (âge le plus grand) ou réel (poids le plus lourd)

int plusGrandAge, age;

float plusGrandeTaille, taille;

2. initialisation : très souvent par une valeur suffisamment petite, avant et en dehors d'une boucle.

plusGrandAge = -200;

plusGrandeTaille = 0.0;

do { /* ou une autre boucle */

...

} while (...);

3. ajustement de sa valeur : à l'intérieur d'une boucle, au bon endroit.

do { /* ou une autre boucle */

...

if (age > plusGrandAge) plusGrandAge = age;

} while (...);

E) Plus petite valeur dans une série de nombres

1. déclaration : de type int (âge le plus petit) ou float (poids le plus léger).

int plusPetitAge, age;

float plusPetiteTaille, taille;

2. initialisation : très souvent par une valeur suffisamment grande, avant et en dehors d'une boucle.

plusPetitAge = 500; /* valeur suffisamment grande */

plusPetiteTaille = 7.0;

do { /* ou une autre boucle */

...

} while (...);

(8)

2. ajustement de sa valeur : à l'intérieur d'une boucle, au bon endroit.

do { /* ou une autre boucle */

...

if (age < plusPetitAge) plusPetitAge = age;

...

} while (...);

(9)

Exemple 3

On dispose du même fichier mesure.dta qu'à la page 2. Écrire un programme qui permet de lire le fichier, de calculer et d'afficher les statistiques suivantes :

 La taille la plus grande;

 Le poids le plus léger des femmes;

 Le poids le plus léger des hommes.

Solution

#include <stdio.h>

void main() {

int numero;

float taille, poids;

char sexe;

float pgTaille, /* la taille la plus grande */

plPoidsFem, /* le poids le plus léger des femmes */

plPoidsHom; /* le poids le plus léger des hommes */

FILE *aLire; /* déclaration du fichier à lire */

/* Initialisations : */

/* du fichier à lire : */

aLire = fopen("mesures.dta", "r"); /* "r" pour "reading" (lecture) */

/* des valeurs plus grandes, plus petites */

pgTaille = 0.0; /* une valeur suffisamment petite */

plPoidsFem = 6500; /* une valeur suffisamment grande */

plPoidsHom = 6500; /* une valeur suffisamment grande */

/* Lecture et ajustement des compteurs : */

while (!feof(aLire)){

/* lecture des données : */

fscanf(aLire,"%d%f%f%c%c%c\n", &numero, &taille, &poids, &sexe, &sexe, &sexe);

/* ajustement de la taille la plus grande */

if (taille > pgTaille) pgTaille = taille;

/* ajustement des poids les plus légers */

if (sexe == 'F'){

if (poids < plPoidsFem) plPoidsFem = poids;

} else

if (poids < plPoidsHom) plPoidsHom = poids;

} /* fin du while */

/* fermeture du fichier à lire : fortement conseillé */

(10)

fclose(aLire);

/* affichage des valeurs plus grandes et plus petites : */

printf("\n\n");

printf("La taille la plus grande : %6.2f metre\n\n", pgTaille);

printf("Le poids le plus leger des femmes : %6.2f kg\n\n", plPoidsFem);

printf("Le poids le plus leger des hommes : %6.2f kg\n\n", plPoidsHom);

printf("\n\nAppuyez sur Entrée");

getchar();

}

Exécution

La taille la plus grande : 1.80 metre Le poids le plus leger des femmes : 44.91 kg Le poids le plus leger des hommes : 56.25 kg

Exercice de révision

Un étudiant en biologie reçoit sur disquette un fichier nommé 'imperial.dta'.

Chaque ligne du fichier contient les informations d'une seule personne :

ROY CHANTAL 23 58 53 5 4 121 MOLAISON CLAUDE 22 7 17 5 11 174 BEDARD MARC-ANDRE 3 3 74 5 4 135 etc.

Une feuille de description de données est aussi fournie avec la disquette : Colonnes 1 à 30 : nom et prénom

Colonnes 39 à 40 : jour de naissance

Colonnes 42 à 43 : mois de naissance (on ajoute 50 dans le cas d'une femme) Colonnes 45 à 46 : année de naissance

Colonne 52 : le nombre de pieds dans sa taille Colonnes 57 à 58 : le nombre de pouces dans sa taille Colonnes 62 à 64 : son poids en livres

L'étudiant aimerait avoir les statistiques suivantes :

 la taille la plus grande;

 le poids le plus léger.

Il aimerait aussi avoir un fichier qui ne contient que des informations sur les personnes de sexe féminin, avec la taille en mètre et le poids en kg.

1 pouce = 0.254 mètre

(11)

1 livre = 0.454 kg

Écrire un programme qui permet de réaliser ces tâches.

Références

Documents relatifs

Pour chaque taille, on a indiqué le nombre de personnes correspondant.. Le caractère étudié est leur moyenne annuelle

L’ensemble de référence pour le calcul des fréquences n’est plus celui de la population totale : ce sera successivement l’ensemble des garçons puis celui des filles et enfin la

Le troisième auteur tient également à remercier Yann Bugeaud pour d’intéressantes discussions sur ce problème et pour la référence au travail de Cassels.... pour chaque k, une

Un ordre de grandeur d’un nombre est une valeur approchée « qui simplifie le nombre » On peut utiliser un ordre de grandeur pour avoir une estimation du résultat d’un calcul ou

Pour chaque taille, on a indiqué le nombre de personnes correspondant.. Le caractère étudié est leur moyenne annuelle

Donner les résultats de ce tableau en effectifs et fréquences cumulés croissants (N est la Note):c. Note

- l'étude de ce que fait l'entreprise (ses process) déplace l'analyse vers l'étude de sa chaîne de valeur et des facteurs clés de succès de l'entreprise. - une modélisation

[r]