Boucle infinie

Résolu
valouvalivalo Messages postés 153 Statut Membre -  
valouvalivalo Messages postés 153 Statut Membre -
Bonjour,
j ai un TP a faire et je dois crée une calculatrice avec une boucle pour pouvoir en sortir mais la boucle n en fini jamais.

#include <iostream>
using namespace std;

int main() 
{ 
double a, b = 0; 
int signe; 
float res;
do
{
cout << "quel est le premier nombre? " << endl; 
cin >> a;
cout << "operation (1=/ 2=* 3=- 4=+)" << endl; 
cin >> signe; 
cout << "quel est le deuxieme nombre? " << endl; 
cin >> b;
if (signe == 1)res = a / b; 
else if (signe == 2)res = a * b; 
else if (signe == 3)res = a - b; 
else if (signe == 4)res = a + b; 
cout << "le resultat est " << res << endl; 

}
while (a != '=');
return (0); 
exit;
}


1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    La condition sur
    while (a != '=');
    ne permet pas d'arrêter la boucle car
    a
    est un
    double
    alors que
    '='
    est un
    char
    ...
    0
    1. valouvalivalo Messages postés 153 Statut Membre 38
       
      comment pourrais je donc faire pour la boucle? pour que la variable de la condition du while corresponde a une des trois variables déjà déclaré
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Je ne vois pas pourquoi l'une de ces trois variables (
      a
      ,
      b
      et
      signe
      ) devrait être utilisée pour arrêter la boucle.

      Il faudrait plutôt rajouter une question pour savoir si on continue ou non.
      0
    3. valouvalivalo Messages postés 153 Statut Membre 38
       
      viola une fois change

      #include <iostream>
      using namespace std;
      
      int main() 
      { 
      double a, b = 0; 
      int signe; 
      float res;
      int z;
      do
      {
      cout << "quel est le premier nombre? " << endl; 
      cin >> a,z;
      cout << "operation (1=/ 2=* 3=- 4=+)" << endl; 
      cin >> signe; 
      cout << "quel est le deuxieme nombre? " << endl; 
      cin >> b;
      if (signe == 1)res = a / b; 
      else if (signe == 2)res = a * b; 
      else if (signe == 3)res = a - b; 
      else if (signe == 4)res = a + b; 
      cout << "le resultat est " << res << endl << endl; 
      cout << "souhaitez vous continuer ? (1=oui / 2=non)"<<endl;
      cin >>z;
      
      }
      while (z != 2);
      return (0); 
      exit;
      }
      


      merci pour vos reponses, sa marche
      (j aurais du y penser avant)
      0