Boucle infinie

Résolu
valouvalivalo Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   -  
valouvalivalo Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   -
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

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
valouvalivalo Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
valouvalivalo Messages postés 131 Date d'inscription   Statut Membre Dernière intervention   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