Boucle infinie

Résolu/Fermé
valouvalivalo Messages postés 130 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 25 juin 2017 - 26 sept. 2015 à 22:01
valouvalivalo Messages postés 130 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 25 juin 2017 - 27 sept. 2015 à 13:13
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
26 sept. 2015 à 23:08
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 130 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 25 juin 2017 38
26 sept. 2015 à 23:19
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
26 sept. 2015 à 23:36
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 130 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 25 juin 2017 38
27 sept. 2015 à 13:13
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