Elektronique - Cours d'électronique

Programme de calcul d'une note moyenne (langage C)

icône imprimante Imprimer cette page

Introduction sur le programme

Difficulté: etoile pleine

Ce tutorial va expliquer comment créer un petit programme en langage C pour calculer une note moyenne.
Je vais essayer de détailler au maximum ce que je fais. Cependant, si vous voulez mieux comprendre il vous faut de petite connaissance en langage C.
Si vous trouver que ce programme est trop dur à réaliser, alors je vous suggère d'aller lire (ou relire) le premier tutorial qui réalise un programme de rendu de monnaie.

J'ai souhaité réaliser un tutorial suffisamment complet pour permettre à un maximum d'entre vous de le réaliser, donc si vous trouvez qu'il est trop détaillé dites-vous que pour certains ce n'est pas assez expliqué. smiley
Bonne chance. smiley

Plan du tutorial

retour en haut

Cahier des charges

Le but du jeu, c'est que l'utilisateur du programme rentre plusieurs notes à la suite.
Exemple : l'utilisateur rentre les notes suivante : 15, 14, 13.
Le programme doit alors donner la note moyenne. Et après je vous donnerais des infos pour l'améliorer (comme par exemple indiquer la note minimal, la note maximal), mais pour le moment c'est déjà pas mal.

Il ne y a juste un petit point qui va poser problème. On demande à l'utilisateur des notes, mais comment faire pour que celui-ci disent : "c'est bon c'était la dernière note, donne moi le résultat". Et bien il va falloir rentré une note négative, et le programme comprendra alors qu'il doit arrêter, et donner le résultat.
Voici donc un exemple concret que vous serez capable de faire à la fin de ce tuto :

exemple du programme calcul d'une note moyenne en langage c
retour en haut

Pratique

Pour réaliser ce programme, il faut toutefois avoir quelques notions de mathématique. Mais je pense que tout le monde sait calculer une note moyenne. Il conviendra d'additionner toutes les notes rentrées, et ensuite de les diviser par le nombres de notes rentrée. Et ça nous donneras donc la valeur moyenne.
Le reste des opérations est expliqué dans ce chapitre, je vais détailler ce que doit contenir la source du programme. Bonne chance.

Bibliothèque

Tout d'abord il faut appeler les bibliothèques nécessaire au bon fonctionnement. Maintenant j'appelle plusieurs bibliothèques. Les 3 principales, avec ça il n'y aura pas de problème si vous voulez faire un programme plus élaboré.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

Fonction principale et initialisation des variables

Dans la fonction principale il va falloir appelé des variables. Pour rappel, la fonction principal est appelée de cette manière :

int main(void)
{
/* le programme sera appelé ici */
}

Et voici les variables que nous allons utiliser. Je les ai commentées, pour que vous compreniez mieux à quoi elle vont servir.

/* Les variables vont être appelée en même temps qu'elle seront initialisée. */
int compteur=0; /* On utilise un int pour compter le nombre de note qu'on rentrera */

float tot=0,/* "tot" va faire le total de toutes les notes */
note=0;

Cette partie de code sera donc à mettre dans le début de la fonction principale.

Après avoir fait tout ceci, je vous conseil d'afficher un petit message à l'utilisateur. Ce sera un petit message qui indique le titre du programme (par exemple).
Pour ma part je met le titre de cette façon :

printf("Statistiques relatives a une suite de notes\n");

Ainsi à l'écran on verra affiché :

Statistiques relatives a une suite de notes
|

Et voilà, la première partie est terminée. Il reste maintenant à faire l'essentiel du programme.

Programme partie 1

Tout d'abord, il y a quelque chose d'important à faire. Souvenez-vous, il va falloir demander à l'utilisateur si c'est la dernière note qu'il rentre. Pour que l'utilisateur indique que c'est la dernière note, il doit donner une note négative. Ainsi, on doit tout d'abord vérifier que la note rentré n'est pas négative. Donc on va faire une boucle (une boucle "tant que", représentée par un while), qui auras pour condition : "tant que la valeur rentré est supérieur à zéro". Et dans cette boucle on fera :

  • Demander à l'utilisateur de rentrer une note.
  • Faire le total de la note rentré + les notes rentrées précédemment.

Donc voilà, pour l'instant on va se contenter de ces fonctions.

La boucle "tant que" doit être représentée en langage c de cette manière :

while (condition)
{
/* action à faire */
}

Cette fonction va faire les actions qui sont entre les 2 accolades tant que la condition est vrai.

La condition à rentrer dans le while c'est que la note rentré est supérieur ou égal à zéro. Et la variable dans laquelle on va enregistré la note rentré sera la variable "note". Donc on va devoir écrire :

while (note>=0)
{
/* action à faire */
}

Il faut bien noter que la symbolique ">=" représente en français : "supérieur ou égal à". Voici dont un tableau des différentes symbolique que l'ont peut rencontrer en langage c :

Symbole Signification
== X est égal à Y
> X est supérieur à Y
>= X est supérieur ou égal à Y
< X est inférieur à Y
< X est inférieur ou égal à Y
!= X est différent de Y

Voilà donc pour cette première condition c'est bon, vous avez compris.

Programme partie 2

Voilà maintenant que l'histoire du while est réglé, nous devons nous intéresser à ce qu'il va y avoir dedans. Dans un premier temps on va demander à l'utilisateur de rentré une note, et ce à l'aide de ce code :

printf("introduisez une note: \n"); scanf("%f", ¬e);

Ce bout de code va donc afficher à l'écran du programme :

introduisez une note:
|

La note rentré par l'utilisateur sera enregistré dans la variable : "note".

Programme partie 3

Souvenez-vous maintenant, comme on fait pour calculer une moyenne. Il faut calculer la somme de toutes les notes, et diviser ce résultat par le nombre de notes total. Et bien juste après avoir rentré la note il va falloir faire :

tot = tot+note;
compteur = compteur+1;

La variable "tot" va contenir le total de toutes les notes rentré. Et "compteur", va lui compter le nombres de notes qui ont été rentré.
En effet "tot" additionne sa précédente valeur, avec la valeur que l'utilisateur à enregistré à l'instant.
Exemple :

tot est égal à 0, l'utilisateur rentre la note 12. Alors, tot = 0 + 12 = 12.
De plus compteur était lui aussi égal à zéro au début, mais après avoir entré la note 12, il va être égal à : 0 + 1 = 1.
Ensuite, l'utilisateur entre la valeur 8. Alors tot = 12 + 8 = 20.
Et compteur va s'incrémenter, il va être égal à 2. Ce calcul va se répéter jusqu'à ce que l'utilisateur entre une valeur négative. On auras alors juste à faire le calcul : tot divisé par compteur.

Et voilà, ça c'est fais.

Récapitulatif

Je suppose qu'avec tout ce que je vous ai donné, il serait intéressant de faire un petit récapitulatif. Alors voici ce que l'ont à fait pour l'instant :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{
int compteur=0; /* On utilise un int pour compter le nombre de note qu'on rentrera */

float tot=0,/* "tot" va faire le total de toutes les notes */
note=0;

printf("Statistiques relatives a une suite de notes\n");

while (note>=0)
{
printf("introduisez une note: \n"); scanf("%f", ¬e); tot = tot+note;
compteur = compteur+1;
}

/* Affichage du résultat */

system ("pause");
return 0;
}

Donc pour l'instant le programme va afficher ceci :

Statistiques relatives a une suite de notes
introduisez une note:
|
retour en haut

Affichage des résultats

Il y a une situation qui peut poser problème dans notre exemple. Imaginons, l'utilisateur comme par rentrer une note négative. Cela signifie qu'il n'y a pas de note pour calculer une moyenne. Dans ce cas-ci, il faudra indiquez à l'utilisateur qu'aucune note n'est valide.
Pour faire ça, on va devoir faire un bout de programme qui dit : "si le compteur est différent de zéro, alors on affiche le résultat". Et en langage c, on traduit cette précédente phrase par ceci :

if (condition)
{
/* action à faire */
}

Vous reconnaissez un peu la même structure que le while. Dans notre exemple, il va falloir dire que la condition c'est "compteur différent de zéro". Et dans le tableau que j'ai donné tout à l'heure le symbole correspondant à cette condition c'est : "!=".
Donc le code qu'on écrira sera :

if (compteur!=0)
{
/* action à faire */
}

Si compteur est égal à zéro que va t'il se passer? Il faut alors dire que aucune note n'est valide. Et on va le faire de cette manière :

if (compteur!=0)
{
/* action à faire */
}
else
printf("Aucune note valide !\n");

Maintenant, juste avant que l'ont affiche le résultat il va falloir faire le petit calcul.

Vous vous souvenez, le calcul qui doit faire : note total divisé par le nombre de note.

Ce calcul ce traduira en langage c, par ceci :

tot = tot-note;
tot = tot / (compteur-1);

Il y a juste une petite subtilité. Il ne faut pas prendre en compte la dernière note que l'utilisateur à rentré. C'est à dire qu'il faut soustraire la note négative qui à été entré pour pouvoir quitter le programme.

Et enfin l'affichage de la note comprise dans la variable tot :

printf("note moyenne :%f\n", tot);

Il faut bien remarquer que l'ont utilise "%f" pour pouvoir afficher un nombre à virgule. Et dans l'affichage de la note moyenne, le %f sera remplacé par la valeur comprise dans tot.

Et voilà, vous savez tout. Pour afficher les résultats il faut mettre tout ce code :

if (compteur!=0)
{
tot = tot-note;
tot = tot / (compteur-1);
printf("note moyenne :%f\n", tot);
}
else
printf("Aucune note valide !\n");
retour en haut

Programme final

Et voilà on a finit.
N'oublions pas de mettre à la fin :

system ("pause");
return 0;

Le programme est totalement finit, vous pouvez si vous le souhaitez maintenant l'améliorer. Pour tester ce programme je vous donne tout le code que l'ont à fait ensemble :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{
int compteur=0; /* On utilise un int pour compter le nombre de note qu'on rentrera */

float tot=0,/* "tot" va faire le total de toutes les notes */
note=0;

printf("Statistiques relatives a une suite de notes\n");

while (note>=0)
{
printf("introduisez une note: \n"); scanf("%f", ¬e); tot = tot+note;
compteur = compteur+1;
}

if (compteur!=0)
{
tot = tot-note;
tot = tot / (compteur-1);
printf("note moyenne :%f\n", tot);
}
else
printf("Aucune note valide !\n");
system ("pause");
return 0;
}

Copiez le dans Dev-c++ et essayez de le tester.

Idée d'amélioration

Je vais vous donner plusieurs consignes pour rendre le programme plus efficace :

  • Faire en sorte que le programme regarde quel était la note maximum et la note minimum
  • Qu'il regarde combien de fois la note maximum et la note minimum on été rentré

Rien qu'avec ça, vous allez bien vous amuser. J'ai mis le résultat du programme avec ces modification dans les téléchargement de programme et ci-dessous.

retour en haut

Télécharger le programme

Voici un petit tableau où vous pourrez télécharger le programme au complet, et aussi le programme amélioré. Vous pourrez donc le tester.

Nom Description exemple programme code en .c code en .txt Difficulté
Note moyenne Calcul la note moyenne d'une suite de notes rentré par l'utilisateur. exemple programme programme en .c programme en .txt etoile pleine
Statistique de note
(programme amélioré).
Donne les statistiques d'une suite de notes (comprise entre 0 et 20).
Calcul la note moyenne, minimum, et maximum.
exemple programme programme en .c programme en .txt etoile pleine
retour en haut