IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

[Débutant] Problème de conditions dans une boucle do..while


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut [Débutant] Problème de conditions dans une boucle do..while
    Bonjour à tous,

    Je sollicite votre aide aujourd'hui car j'ai un petit problème avec un TP que je dois faire dans une UE d'informatique à ma fac

    Voilà l'énoncé :

    Écrire un programme qui calcule la note du contrôle continu d’une UE de biochimie. La note de contrôle
    continu est la moyenne des notes des TP rendus.
    – toute note égale à 0 est éliminatoire et la note du CC est donc de 0.
    – toute absence justifiée à un TP est saisie par la valeur -1 qui n’est pas prise en compte pour le calcul de la
    moyenne.
    – il faut avoir au moins 4 notes de TP pour avoir une moyenne et pour que le programme affiche un résultat.
    – la saisie des notes de TP se termine par un -2.

    Actuellement, j'ai écris ce code, mais je ne comprends pas pourquoi lorsque je compile et éxécute ce code, la condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (note == 0) {
     
            cout << "0 est une note éliminatoire !" << endl;
            moyenne = 0;
            note = -2;
        }
    n'est jamais remplie même si je saisi la note 0 dans la console !

    Je ne comprends pas pourquoi il ne rentre pas dans cette condition

    Sinon le code en entier que j'ai fait pour le moment :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #include <iostream>
    using namespace std;
     
    int main(){
     
      // Declarations
     
      int nombreTP = 0;
      float moyenne, note, totalDesNotes = 0;
     
     
      // Instructions
     
     
    cout << ":: Note du controle continu de Biochimie ::" << endl;
     
     
    do {
     
      cout << "Saisir la note du TP : ";
      cin >> note;
     
        if (note == 0) {
     
            cout << "0 est une note éliminatoire !" << endl;
            moyenne = 0;
            note = -2;
     
         }
     
        else if (note != -2 && note != -1) {
     
         nombreTP++;
         totalDesNotes = totalDesNotes + note;
         moyenne = totalDesNotes/nombreTP;
     
        }
     
     
        } while (note != -2);
     
     
      cout << "Votre moyenne est de : " << moyenne << "/20" << endl;
     
      system("PAUSE");
      return EXIT_SUCCESS;
     
     }

  2. #2
    Membre régulier
    Inscrit en
    Août 2002
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 157
    Points : 112
    Points
    112
    Par défaut
    salut,
    j'ai pris ton code et la compiler executer ca fonction il m'affiche le bon message
    Images attachées Images attachées  

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par mahboub Voir le message
    salut,
    j'ai pris ton code et la compiler executer ca fonction il m'affiche le bon message


    Je comprends pas, moi ça ne marche pas !

    J'utilise code::blocks...

    J'vais essayer sur dev C++ pour voir mais j'suis sceptique

    edit : effectivement sous dev C++ ça a marché, mais étant sous la beta de windows 7, c'est pourri de bug (genre la compilation dure 1 seconde mais il faut attendre 30 secondes avant que l'exe ne s'ouvre )

    Vous savez pourquoi code::blocks me fait ça ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Bon bah pour ça c'est résolu... Sur mon PC portable sous Code::Blocks, ça se compile et s'éxécuter comme il faut.

    Le programme fonctionne bien pour ce qu'on lui demande de faire (sans chercher la petite bête comme des notes négatives etc...)

    Je vous mets le code pour poser une petite question :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    #include <iostream>
    using namespace std;
     
    int main() {
     
      // Declarations
     
      int nombreTP = 0;
      float moyenne, note, totalDesNotes = 0;
     
     
      // Instructions
     
     
    cout << ":: Note du controle continu de Biochimie ::" << endl;
     
     
    do {
     
      cout << "Saisir la note du TP : ";
      cin >> note;
     
     
            if (note == 0) {
     
                cout << "\n0 est une note eliminatoire !" << endl;
                moyenne = 0;
                note = -2;
     
            }
     
     
     
            else if (note != -2 && note != -1) {
     
                nombreTP++;
                totalDesNotes = totalDesNotes + note;
                moyenne = totalDesNotes/nombreTP;
     
            }
     
     
        } while (note != -2);
     
     
      if (nombreTP >= 4) {
     
         cout << "Votre moyenne est de : " << moyenne << "/20" << endl;
     
      }
     
      else {
     
          cout << "\nIl faut avoir au moins 4 notes de TP pour avoir une moyenne !" << endl;
      }
     
     }
    Voilà, dans ma condition si une note est égale à 0, pour arrêter le programme je le force à sortir de la boucle en lui assignant le cas d'arrêt.

    Je ne vois pas comment pourrais-je faire autrement, quelque chose de plus propre, car mon prof m'interdit d'utiliser des break etc... Sauf que là j'ai fait une sorte de break déguisé

Discussions similaires

  1. [Débutant] condition dans une boucle
    Par beben695 dans le forum Général Python
    Réponses: 3
    Dernier message: 30/03/2011, 22h41
  2. Un probléme de condition dans une boucle
    Par boubz013 dans le forum Débuter
    Réponses: 6
    Dernier message: 22/02/2010, 15h52
  3. [débutant] problème de condition dans une requete
    Par banker dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 13h52
  4. Réponses: 6
    Dernier message: 17/08/2005, 12h38
  5. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19

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