/*
 * @topic Q00607 2/6/2014 Flow control
 * @brief in-class demo -- endless for(;;) loop
*/

#include <iostream>
#include <string>

using namespace std;

void pause()
{
    //----------------------------------------------
    // prevent window from closing before exiting:
    //----------------------------------------------
    char ch; // ch is a variable that holds a character

    // curious \n is a "line feed" control character,
    // it moves the cursor to the next line:
    std::cout << "\nEnter X to Exit: ";

    std::cin.ignore( 1, '\n' ); // extract and discard characters
    std::cin.clear();           // this clears cin state
    std::cin.get( ch ); // this reads a character from the keyboard,
                        // and pauses the program from before exiting
}

int main()
{
    // Another example of a "while" loop:
    int count = 5;
    while ( count > 0 ) {
        cout << count << ' ';
        count = count - 1;
    }
    cout << '\n';

    // Similar loop, but using a "for" statement:
    for ( count = 5; count > 0; count = count - 1 ) {
        cout << count << ' ';
        if ( count == 2 ) {
            break;
        }
    }

    // The for(;;) construct is pronounced as "forever"
    // This is an endless loop. The user, however, can break out
    // of the endless loop by entering the required input:
    for(;;) {
        char ch;
        cout << "Would you like to exit? Type y if YES: ";
        cin >> ch;
        if ( ch == 'y' ) {
            return 0;
        }
    }

    pause();
}