Vous êtes sur la page 1sur 2

© Mr HousNi * housni14@gmail.

com

TP de Programmation en Langage C avec Corrigé


Statistiques des notes
Ecrire un programme qui lit les points de N élèves d'une classe dans un devoir et les
mémorise dans un tableau POINTS de dimmension N.

1. Rechercher et afficher:
• la note maximale,
• la note minimale,
• la moyenne des notes.

2. A partir des points des élèves, établir un tableau NOTES de dimmension 7 qui est composé
de la façon suivante:
• NOTES[6] contient le nombre de notes 60
• NOTES[6] contient le nombre de notes de 50 à 59
• NOTES[5] contient le nombre de notes de 40 à 49
...
• NOTES[0] contient le nombre de notes de 0 à 9

Etablire un graphique de barreaux représentant le tableau NOTES. Utilisez le symbole #


pour la représentation des barreaux et affichez le domaine des notes en dessous du graphique.

Idée: Déterminer la valeur maximale NMAX dans le tableau NOTES et afficher autant de
lignes sur l'écran.

Exemple: (NMAX=3)

1/2
© Mr HousNi * housni14@gmail.com

Corrigé
#include <stdio.h>
#include <stdlib.h>
main()
{
// déclaration des variables
int N; // nombre de NOTES
float note_max, note_min, moy; // note maximale et note minimale
int i,j; // compteur
// lecture de N
printf("Donner le nombre de NOTES: ");
scanf("%d",&N);
// déclaration du tableau
float POINTS[N];
// remplissage des NOTES
printf("\n");
for(i=0;i<N;i++){
printf("Donner la note de l'eleve %d : ",i+1);
scanf("%f",&POINTS[i]);
}
// calcul et affichage de la note maximale et de la note minimale
note_max=POINTS[0];
note_min=POINTS[0];
moy=0;
for(i=0;i<N;i++){
if(POINTS[i]>note_max) note_max=POINTS[i];
if(POINTS[i]<note_min) note_min=POINTS[i];
moy=moy+POINTS[i]/N;
}
printf("\nLa note maximale est %.2f",note_max);
printf("\nLa note minimale est %.2f",note_min);
printf("\nLa moyenne des NOTES est %.2f",moy);
// declaration et initialisation du tableau qui contiendra la distribution des NOTES
int NOTES[7]={0,0,0,0,0,0,0};
int MAXN;
// calcul de la distribution
for(i=0;i<N;i++){
if((0<=POINTS[i])&&(POINTS[i]<10)) NOTES[0]++;
if((10<=POINTS[i])&&(POINTS[i]<20)) NOTES[1]++;
if((20<=POINTS[i])&&(POINTS[i]<30)) NOTES[2]++;
if((30<=POINTS[i])&&(POINTS[i]<40)) NOTES[3]++;
if((40<=POINTS[i])&&(POINTS[i]<50)) NOTES[4]++;
if((50<=POINTS[i])&&(POINTS[i]<60)) NOTES[5]++;
if(POINTS[i]==60) NOTES[6]++;
}
printf("\n");
// calcul de MAXN
MAXN=NOTES[0];
for(i=1;i<7;i++){
if(NOTES[i]>MAXN) MAXN=NOTES[i];
}
// déclaration du tableau d'affichage
int dstr[7][MAXN];
for(i=0;i<7;i++){
for(j=0;j<NOTES[i];j++){
dstr[i][j]=1;
}
for(j=NOTES[i];j<MAXN;j++){
dstr[i][j]=0;
}
}

printf("\n\n");
// affichage de la distribution
for(i=MAXN-1;i>=0;i--){
printf("%d >",i+1);
for(j=0;j<7;j++)
{
if(dstr[j][i]==1) printf(" #######");
else printf(" ");
}
printf("\n");
}
printf(" +-------+-------+-------+-------+-------+-------+-------+\n");
printf(" I 0-9 I 10-19 I 20-29 I 30-39 I 40-49 I 50-59 I 60 I");

printf("\n\n");
system("PAUSE");
}

2/2