1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2018
    Messages : 6
    Points : 4
    Points
    4

    Par défaut scanf() pour récupérer des notes

    Bonjour,

    En ce moment je code un programme pour dire si c'est la moyenne ou non et que les notes doivent être entre 0 et 20 mais le programme me retourne à chaque fois que c'est la moyenne et si j'entre les notes au dessus de 20 la condition n'est pas réalisée.
    Pouvez vous me dire ou j'ai fait une erreur?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <stdlib.h>
    #include <stdio.h>
     
    int main ()
    {
     
    	int note;
    	int stock;
    	do {
    		printf("Veuillez entrer une note :\n");
    		note = scanf("%d" , &stock);
    	}while(note <= 0 && note >=20); 
     
    	if (note < 10)
    	{
    		printf("Vous avez eu la moyenne\n");
    	}
    	else
    	{
    		printf("Vous avez pas eu la moyenne\n");
    	}
     
    	return 1;
     
    }
    Merci,

    Cpsatos

  2. #2
    Membre expert
    Inscrit en
    mars 2005
    Messages
    1 194
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 194
    Points : 3 470
    Points
    3 470

    Par défaut

    J'ai deux questions :

    1. comment comptes-tu stocker plusieurs notes ?
    2. D'après la documentation de scanf, quels sont selon toi les soucis posés par la manière dont tu l'utilises ?


    Pense à donner un titre explicite à tes sujets, sur un forum d'entraide à la programmation on se doute que tu vas nous parler de tes difficultés à programmer..

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2018
    Messages : 6
    Points : 4
    Points
    4

    Par défaut

    En fait je veux que l'utilisateur entreune note et le programme doit dire si c'est au dessus de la moyenne ou en dessous.
    Mais je ne vois pas où est l'erreur.


    Je ne vois pas quel erreur j'ai fait avec scanf.

    Ok d'accord je mettrai des titre explicites

  4. #4
    Membre expert
    Inscrit en
    mars 2005
    Messages
    1 194
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 194
    Points : 3 470
    Points
    3 470

    Par défaut

    Ok. Je pensais que tu cherchais à calculer une moyenne, auquel cas tu aurais eu besoin de lire plusieurs notes.


    De la documentation de scanf (l'emphase est mienne), l'introduction :

    Reads data from the a variety of sources, interprets it according to format and stores the results into given locations.
    1) reads the data from stdin
    ..et la section return value, à propos de ce qui est retourné par la fonction donc :

    Number of receiving arguments successfully assigned (which may be zero in case a matching failure occurred before the first receiving argument was assigned), or EOF if input failure occurs before the first receiving argument was assigned.
    Autrement dit : scanf stocke ce qui a été lu dans ses paramètres, qui lui sont passés (par référence) lors de l'appel, puis retourne le nombre de paramètres auxquels elle est parvenue à affecter une valeur. scanf ne retourne pas ce qui a été lu !

    Peux-tu en déduire pourquoi note = scanf("%d" , &stock); ne fait pas ce que tu escomptes ?


    Si ce n'est déjà fait, il faudrait que tu lises et assimiles au moins la première moitié du cours de C avant d'aller plus loin.

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    3 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués

    Informations forums :
    Inscription : juin 2009
    Messages : 3 713
    Points : 9 935
    Points
    9 935
    Billets dans le blog
    1

    Par défaut

    Pour scanf() en particulier, je te conseille cet article : http://xrenault.developpez.com/tutoriels/c/scanf/


    PS : j'ai modifié le titre de la discussion

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Eleve
    Inscrit en
    novembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Eleve

    Informations forums :
    Inscription : novembre 2017
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    la condition doit verifier si le nombre entrer par the user est au dessous 10 ou si il est au dessus de 10.
    Pour cela la condition doit être :
    if (stock >= 10)
    et non if ( note < 10) cette condition n'est pas bon.......

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    6 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 6 163
    Points : 17 152
    Points
    17 152
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par Cpsatos Voir le message
    Pouvez vous me dire ou j'ai fait une erreur?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <stdlib.h>
    #include <stdio.h>
    
    int main ()
    {
    	
    	int note;
    	int stock;
    	do {
    		printf("Veuillez entrer une note :\n");
    		note = scanf("%d" , &stock);
    	}while(note <= 0 && note >=20); 
    
    	if (note < 10)
    	{
    		printf("Vous avez eu la moyenne\n");
    	}
    	else
    	{
    		printf("Vous avez pas eu la moyenne\n");
    	}
    
    	return 1;
    
    }
    Bonjour

    Moi je ne sais pas trop comment une note peut être plus petite que 0 et aussi (donc "en même temps") plus grande que 20. Peut-être qu'avec la mécanique quantique... et je ne vois pas trop à quoi sert la variable "stock" là dedans.

    Sinon dans mes souvenirs d'école, "avoir la moyenne" signifiait "avoir au-moins 10". Mais bon, avec l'école moderne peut-être que...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  8. #8
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    5 062
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 5 062
    Points : 16 569
    Points
    16 569

    Par défaut

    pire, stock contiendra la valeur lue, et note contiendra le nombre de champ effectivement lu (soit 0 ou 1).
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Probleme avec mon programme des 8 reines
    Par zuzu6969 dans le forum C++
    Réponses: 12
    Dernier message: 08/04/2010, 14h30
  2. Probleme avec un programme
    Par eldiablo7 dans le forum C
    Réponses: 1
    Dernier message: 21/04/2009, 20h46
  3. probleme avec un programme en JS qui realise des calculs
    Par leclone dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/09/2006, 18h09
  4. [TP] Problème avec mon programme de conversion
    Par Panzer95 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 28/05/2006, 18h36
  5. Debutant en JAVA, problème avec 1er programme
    Par Gymerus dans le forum IO
    Réponses: 13
    Dernier message: 07/09/2005, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo