C++ Noobie - Why does moving these lines break my application?

c++

Solution

Try this

    // Capture inputs
cout << "Please enter your total bill\t";
cin >> totalBill;
cin.clear();
cin.sync();

See c++ getline() isn't waiting for input from console when called multiple times

Or, better yet don't use getline at all:

cout << "Please enter your total bill\t";
cin >> totalBill;

cout << "Did you drink any booze? (Yes or No)\t";
cin >> hadLiquour;

Problem

This is my first attempt at C++, following an example to calculate a tip through a console application. The full (working code) is shown below: ``` // Week1.cpp : Defines the entry point for the console application. #include "stdafx.h" #include <iostream> #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { // Declare variables double totalBill = 0.0; double liquour = 0.0; double tipPercentage = 0.0; double totalNoLiquour = 0.0; double tip = 0.0; string hadLiquour; // Capture inputs cout << "Did you drink any booze? (Yes or No)\t"; getline(cin, hadLiquour, '\n'); if(hadLiquour == "Yes") { cout << "Please enter you booze bill\t"; cin >> liquour; } cout << "Please enter your total bill\t"; cin >> totalBill; cout << "Enter the tip percentage (in decimal form)\t"; cin >> tipPercentage; // Process inputs totalNoLiquour = totalBill - liquour; tip = totalNoLiquour * tipPercentage; // Output cout << "Tip: " << (char)156 << tip << endl; system("pause"); return 0; } ``` This works fine. However, I want to move: ``` cout << "Please enter your total bill\t"; cin >> totalBill; ``` to be the first line under: ``` // Capture inputs ``` But when I do the application breaks (it compiles, but just ignores the if statement and then prints both cout's at once. Im scratching my head becuase I cant understand what's going on - but I'm assuming I'm being an idiot! Thanks

Original source

Related problems