2017-03-20 1 views
-1

J'essaie de créer un programme qui permet à un utilisateur d'entrer les scores donnés par cinq juges. Cependant, une fois arrivé au score du troisième juge, l'incrémentation utilisée pour étiqueter le juge # cesse de fonctionner, et je crois que cela a à voir avec le fait qu'il se trouve dans une instruction if/else. Voici mon code:Incrémentation C++ ne fonctionnant pas dans l'instruction If If

#include <iostream> 
#include <string> 

using namespace std; 

string name; 
string city; 
double highestScore; 
double lowestScore; 
double totalScore; 

void main() 
{ 

    cout << " Report to the media" << endl; 
    cout << "Enter the diver name: "; 
    getline(cin, name); 
    cout << endl; 
    cout << "Enter the diver's city: "; 
    getline(cin, city); 
    cout << endl; 

    int count = 0; 
    double score1, score2, score3, score4, score5; 
    int judgeNum = 0; 

    judgeNum ++; 
    cout << "Enter the score given by judge #" << judgeNum << ": "; 
    cin >> score1; 
    if (score1 < 0 || score1 > 10) 
      { 
       cout << endl; 
       cout << "Score must be between 1 and 10. Please re-enter score: "; 
       cin >> score1; 
      } 
    cout << endl; 
    count ++; 

    while (count <= 5) 
    { 
     judgeNum ++; 
     count ++; 

     cout << "Enter the score given by judge #" << judgeNum << ": "; 

     if (judgeNum = 2) 
     { 
      cin >> score2; 
      if (score2 < 0 || score2 > 10) 
      { 
       cout << endl; 
       cout << "Score must be between 1 and 10. Please re-enter score: "; 
       cin >> score2; 
      } 
     } 
     else 
     { 
      if (judgeNum = 3) 
      { 
       cin >> score3; 
       if (score3 < 0 || score3 > 10) 
       { 
        cout << endl; 
        cout << "Score must be between 1 and 10. Please re-enter score: "; 
        cin >> score3; 
       }    
      } 
      else 
      { 
       if (judgeNum = 4) 
       { 
        cin >> score4; 
        if (score4 < 0 || score4 > 10) 
        { 
         cout << endl; 
         cout << "Score must be between 1 and 10. Please re-enter score: "; 
         cin >> score4; 
        } 
       } 
       else 
       { 
        if (judgeNum = 5) 
        { 
         cin >> score5; 
         if (score5 < 0 || score5 > 10) 
         { 
          cout << endl; 
          cout << "Score must be between 1 and 10. Please re-enter score: "; 
          cin >> score5; 
         } 
        } 
       } 
      } 
     } 
     cout << endl; 
    } 
    cout << score1 << score2 << score3 << score4 << score5; 
} 
+0

Retirez tout le code nécessaire pour ne pas reproduire l'erreur. Dites-nous également quelle entrée a provoqué l'erreur, quelle sortie vous avez obtenue et quelle sortie vous attendiez. –

+0

'if (judgeNum = 1)' semble très étrange pour moi. '=' et '==' sont deux choses différentes en C++. Lorsque vous voulez attribuer une valeur à une variable, utilisez '=' et lorsque vous comparez deux choses, utilisez '=='. –

+0

Voir votre code attentivement. –

Répondre

2

if (judgeNum = 2) ensembles judgeNum à 2, puis vérifie si la nouvelle valeur de judgeNum est "truthy" (non nul). Puisque la nouvelle valeur est 2, elle le sera toujours, et judgeNum sera toujours réglé sur 2 ici, puis incrémenté. En C, C++ et dans la plupart des autres langages, l'égalité est déterminée en utilisant deux =, comme if (judgeNum == 2). Essayez de réparer cela en premier.

+0

Merci, erreur assez embarrassante honnêtement, je le savais mais totalement foiré ça. – jackofblaze

1

En plus de la kdmurray91's answer

CORRECTE

using namespace std; 

string name; 
string city; 
double highestScore; 
double lowestScore; 
double totalScore; 

void main() 
{ 

    cout << " Report to the media" << endl; 
    cout << "Enter the diver name: "; 
    getline(cin, name); 
    cout << endl; 
    cout << "Enter the diver's city: "; 
    getline(cin, city); 
    cout << endl; 

    int count = 0; 
    double score1, score2, score3, score4, score5; 
    int judgeNum = 0; 

    judgeNum ++; 
    cout << "Enter the score given by judge #" << judgeNum << ": "; 
    cin >> score1; 
    if (score1 < 0 || score1 > 10) 
      { 
       cout << endl; 
       cout << "Score must be between 1 and 10. Please re-enter score: "; 
       cin >> score1; 
      } 
    cout << endl; 
    count ++; 

    while (count <= 5) 
    { 
     judgeNum ++; 
     count ++; 

     cout << "Enter the score given by judge #" << judgeNum << ": "; 

     if (judgeNum == 2) 
     { 
      cin >> score2; 
      if (score2 < 0 || score2 > 10) 
      { 
       cout << endl; 
       cout << "Score must be between 1 and 10. Please re-enter score: "; 
       cin >> score2; 
      } 
     } 
     else 
     { 
      if (judgeNum == 3) 
      { 
       cin >> score3; 
       if (score3 < 0 || score3 > 10) 
       { 
        cout << endl; 
        cout << "Score must be between 1 and 10. Please re-enter score: "; 
        cin >> score3; 
       }    
      } 
      else 
      { 
       if (judgeNum == 4) 
       { 
        cin >> score4; 
        if (score4 < 0 || score4 > 10) 
        { 
         cout << endl; 
         cout << "Score must be between 1 and 10. Please re-enter score: "; 
         cin >> score4; 
        } 
       } 
       else 
       { 
        if (judgeNum == 5) 
        { 
         cin >> score5; 
         if (score5 < 0 || score5 > 10) 
         { 
          cout << endl; 
          cout << "Score must be between 1 and 10. Please re-enter score: "; 
          cin >> score5; 
         } 
        } 
       } 
      } 
     } 
     cout << endl; 
    } 
    cout << score1 << score2 << score3 << score4 << score5; 
}