Maintenant, j'ai la boucle while qui marche, mais maintenant elle boucle la réponse de la première opération au lieu de demander d'entrer un autre nombre pour plus opérations et quand j'appuie sur x pour sortir, il ne sort pas. Je me demandais juste où placer la ligne de code pour demander de saisir une autre série de chiffres. Alors pour l'entrée de Y ou X oui pour continuer et x pour sortir où je pourrais mettre la ligne de code pour cela. J'ai juste besoin de savoir où c'est tout cela grâce :)Je n'arrive pas à faire fonctionner la boucle et quand j'appuie sur le bouton pour quitter mon commutateur, ça ne marche pas
#include <iostream>
using namespace std;
char op, x, y;
double scanNumber() {
double d;
cin >> d;
return d;
}
bool readOperator(string s, char &operation) {
char c;
cout << "\nEnter Operator: ";
cin >> c;
if (s.find(c) != -1) {
operation = c;
return true;
}
return false;
}
double add(double d1, double d2) {
return d1 + d2;
}
double sub(double d1, double d2) {
return d1 - d2;
}
double mul(double d1, double d2) {
return d1*d2;
}
double division(double d1, double d2) {
return d1/d2;
}
int main()
{
double d1, d2;
cout << "Enter 1st Number: ";
d1 = scanNumber();
cout << "Enter 2nd Number: ";
d2 = scanNumber();
char operation;
while (!readOperator("+-*/", operation)) {
cout << "Invalid Operator Please Pick Another One" << endl;
}
bool valid;
double result;
do{
switch (operation)
{
case '+':
result = add(d1, d2);
break;
case '-':
result = sub(d1, d2);
break;
case '*':
result = mul(d1, d2);
break;
case '/':
if (d2 == 0) {
cout << "For division, 2nd operator can't be 0." << endl;
}
else {
result = division(d1, d2);
}
break;
case 'c':
cout << "Clearing the Calculator " << endl;
valid = false;
break;
case 'x':
exit(0);
default:
cout << "invalid input";
}
cout << "\nResult: " << result << endl;
cout << "\nDo another?(Enter 'y'for yes or 'x' to exit) ";
cin >> y, x;
}while (op != 'x');
return 0;
}
Soit utiliser 'getline()' lire vos entrées, ou utilisez 'cin .ignore() 'pour ignorer le retour à la ligne qui reste dans le flux d'entrée après avoir lu' operation'. – Barmar
Tout code suivant une instruction 'return' ne sera pas exécuté. L'exécution quittera la fonction avant l'exécution de l'instruction suivante. –
Il n'y a rien qui vérifie si 'ch' est' y' ou 'x'. – Barmar