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

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); Chapitre 5 : Quelques statistiques de base IFT 1969 / A07 Page 1 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> int 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; Chapitre 5 : Quelques statistiques de base IFT 1969 / A07 Page 2 FILE *aLire; /* déclaration du fichier à lire */ /* 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 Chapitre 5 : Quelques statistiques de base IFT 1969 / A07 Page 3 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. Chapitre 5 : Quelques statistiques de base IFT 1969 / A07 Page 4 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; Chapitre 5 : Quelques statistiques de base IFT 1969 / A07 Page 5 float totTaille, /* somme des tailles */ 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 Chapitre 5 : Quelques statistiques de base IFT 1969 / A07 Page 6 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 */ ... Chapitre 5 : Quelques statistiques de base IFT 1969 / A07 Page 7 } while (...); 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 (...); Chapitre 5 : Quelques statistiques de base IFT 1969 / A07 Page 8 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 uploads/Geographie/ chapitre-5 1 .pdf

  • 43
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager