Insersion de notes pour un bulletin
mbadih
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je souhaite réaliser une application simple consistant à insérer les notes dans un bulletin, or lorsque je compile sur ma console on ne me permet d'insérer que la première note. voici mon code :
Merci d'avance pour votre aide
Je souhaite réaliser une application simple consistant à insérer les notes dans un bulletin, or lorsque je compile sur ma console on ne me permet d'insérer que la première note. voici mon code :
#include <stdio.h> #include <stdlib.h> float fr; float ang; float philo; float math; float phys_chimie; float svt; float histgeo; void InsersionDesNotes() { printf("veuillez inserer les notes: \n"); printf("\t\t\n fr : "); scanf(" %0.02%f ",&fr); printf("\t\t\n anglais : "); scanf(" %0.02%f ",&ang); printf("\t\t\n philosophie : "); scanf(" %0.02%f ",&philo); printf("\t\t\n math : "); scanf(" %0.02%f ",&math); printf("\t\t\n physique et chimie : "); scanf("%0.02%f ",&phys_chimie); printf("\t\t\n science et vie de la terre : "); scanf(" %0.02%f ",&svt); printf("\t\t\n histoire et géographie : "); scanf("%0.02%f ",&histgeo); } int main() { InsersionDesNotes(); }
Merci d'avance pour votre aide
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Insersion de notes pour un bulletin
- Retrouver une musique avec les notes - Guide
- Bloc-notes (windows) - Télécharger - Traitement de texte
- Post it notes - Télécharger - Agendas & Calendriers
- Donnez à ce fichier les mêmes droits d'accès que les autres notes de service. ✓ - Forum Jeux vidéo
- Désactiver capteur de proximité xiaomi redmi note 13 ✓ - Forum Xiaomi
1 réponse
Salut mbadih,
Le spécificateur de format
vois http://www.cplusplus.com/reference/cstdio/scanf/
A format specifier for scanf follows this prototype:
%[*][width][length]specifier
et les tableaux qui suivent.
Ce qui ne va pas sur scanf :
- avec scanf, tu ne peux pas mettre de point (contrairement à printf, qui a ses propres formats, qui sont différents de ceux de scanf)
- cela n'a aucun sens de mettre 0 en tant que "width", car cela signifie que tu ne lis, en fait, aucun caractère.
- le "length" dans scanf n'est pas un nombre, mais un spécificateur de taille (vois le tableau de la doc)
- il n'y a qu'un seul %, qui est au début, "specifier" est en dernier et est un spécificateur de type (vois le tableau de la doc) ... il n'y a d'ailleurs pas non plus de % en fin d'expression pour printf ...
- tu devrais enlever l'espace en fin de format, car sinon il va consommer ton retour à la ligne, or, tu en as besoin pour arrêter la saisie
- quant à l'espace en début, que tu as mis parfois, je le supprimerai aussi, mais dans ton cas il n'aura pas vraiment d'impact
Le fait que ton programme compile sans erreur fatale, ne signifie pas qu'il est sans erreurs. En compilant avec les warnings, ton compilateur va se plaindre. Il ne faut pas ignorer les avertissements, ils attirent l'attention sur ce qui est, la plupart du temps, une erreur. Il faut comprendre pourquoi ils se manifestent, et en éliminer la cause.
La prochaine fois, tiens compte de ces warnings et cherche par toi même avec une documentation de référence. Si tu ne trouves vraiment pas pourquoi ils se manifestent, demande de l'aide ici :-)
Enfin :
- ta fonction main doit renvoyer un entier
- double est préféré à float par la bibliothèque standard, alors il est des personnes qui en recommandent l'utilisation par défaut pour des nombres à virgule, sauf cas particuliers nécessitant vraiment un float
- c'est une mauvaise habitude de créer des variables globales
Dal
Le spécificateur de format
" %0.02%f "est erroné pour scanf (et même pour printf en fait).
vois http://www.cplusplus.com/reference/cstdio/scanf/
A format specifier for scanf follows this prototype:
%[*][width][length]specifier
et les tableaux qui suivent.
Ce qui ne va pas sur scanf :
- avec scanf, tu ne peux pas mettre de point (contrairement à printf, qui a ses propres formats, qui sont différents de ceux de scanf)
- cela n'a aucun sens de mettre 0 en tant que "width", car cela signifie que tu ne lis, en fait, aucun caractère.
- le "length" dans scanf n'est pas un nombre, mais un spécificateur de taille (vois le tableau de la doc)
- il n'y a qu'un seul %, qui est au début, "specifier" est en dernier et est un spécificateur de type (vois le tableau de la doc) ... il n'y a d'ailleurs pas non plus de % en fin d'expression pour printf ...
- tu devrais enlever l'espace en fin de format, car sinon il va consommer ton retour à la ligne, or, tu en as besoin pour arrêter la saisie
- quant à l'espace en début, que tu as mis parfois, je le supprimerai aussi, mais dans ton cas il n'aura pas vraiment d'impact
Le fait que ton programme compile sans erreur fatale, ne signifie pas qu'il est sans erreurs. En compilant avec les warnings, ton compilateur va se plaindre. Il ne faut pas ignorer les avertissements, ils attirent l'attention sur ce qui est, la plupart du temps, une erreur. Il faut comprendre pourquoi ils se manifestent, et en éliminer la cause.
La prochaine fois, tiens compte de ces warnings et cherche par toi même avec une documentation de référence. Si tu ne trouves vraiment pas pourquoi ils se manifestent, demande de l'aide ici :-)
Enfin :
- ta fonction main doit renvoyer un entier
- double est préféré à float par la bibliothèque standard, alors il est des personnes qui en recommandent l'utilisation par défaut pour des nombres à virgule, sauf cas particuliers nécessitant vraiment un float
- c'est une mauvaise habitude de créer des variables globales
Dal