J'ai donc dépanné ce programme et j'ai déjà posé des questions à ce sujet auparavant. J'ai pris au sérieux les conseils d'autres personnes et je les ai appliquées à mon programme, mais ça ne marche toujours pas. Ceci est modifié (quoique raccourci) Code:La boucle en C++ ne fonctionne plus
#include <iostream>
#include <string>
double balance, withdraw, deposit;
std::string choice;
void withdrawmon()
{
balance -= withdraw;
}
void depositmon()
{
balance += deposit;
}
int main()
{
std::cout << "Welcome to the Bank Program." << std::endl;
std::cout << "Enter a starting balance: ";
std::cin >> balance;
std::cin.clear();
do
{
std::cout << "Withdraw, deposit, or quit: ";
std::getline (std::cin, choice);
if(choice == "withdraw")
{
std::cout << "Enter amount to withdraw: ";
std::cin >> withdraw;
withdrawmon();
std::cout << "Your current balance is $" << balance << std::endl;
}
else if(choice == "deposit")
{
std::cout << "Enter amount to deposit: ";
std::cin >> deposit;
depositmon();
std::cout << "Your current balance is $" << balance << std::endl;
}
}
while(choice != "quit");
std::cout << "Thanks for using the Bank Program. Your final balance was $" << balance << std::endl;
return 0;
}
Il n'y aurait pas un problème, et le code fonctionne, mais la sortie est comme ceci: https://www.dropbox.com/s/aocn6asjr4ofcws/Broken%20Output.PNG
Comme vous pouvez le voir le « RETIRER , déposer ou quitter: "la ligne s'imprime deux fois à chaque redémarrage de la boucle. Quelqu'un sait pourquoi? Toute aide est appréciée. Je suis un nouveau programmeur en ce qui concerne le C++, donc toute aide est appréciée.
Rechercher * getline skipping * ici et vous obtiendrez beaucoup de réponses. – chris
Utilisez juste 'std :: cin.ignore();' après avoir lu l'entrée avec >> pour ignorer le caractère '\ n'. – mhcuervo