    #include <iostream>
    using std::cin;
    using std::cout;

    static const double USD_TO_MXN = 12.99;
    static const double GBP_TO_MXN = 22.03;
    static const char DATA_DATE[] = "6/12/2014";

    void convert(const char* from, const char* to, double exchange)
    {
        cout << "Enter the number of " << from << " to convert to " << to << ".\n"
                     "Amount: ";
        int original;
        cin >> original;
        cout << '\n' << original << ' ' << from << " gives " << int(original * exchange) << ' ' << to << ".\n";
    }

    int main()  // this is valid since C++2003
    {
        cout << "Foreign Currency Converter\n"
                "1 USD = " << USD_TO_MXN << " MXN (" << DATA_DATE << ")\n"
                "1 GBP = " << GBP_TO_MXN << " MXN (" << DATA_DATE << ")\n"
                "\n";

        for ( ; ; ) {   // continuous loop
            cout << "Which conversion do you want to perform?\n"
                    "[1] USD to MXN\n"
                    "[2] MXN to USD\n"
                    "[3] GBP to MXN\n"
                    "[4] MXN to GBP\n"
                    "[0] Quit\n"
                    "Selection: ";
            int choice = -1;
            cin >> choice;
            cout << '\n';

            switch (choice) {
                case 0:
                    return 0;       // return from main

                case 1:
                    convert("US Dollars", "Pesos", USD_TO_MXN);
                    break;

                case 2:
                    convert("Pesos", "US Dollars", 1 / USD_TO_MXN);
                    break;

                case 3:
                    convert("British Pounds", "Pesos", GBP_TO_MXN);
                    break;

                case 4:
                    convert("Pesos", "British Pounds", 1 / GBP_TO_MXN);
                    break;

                default:
                    cout << "Invalid selection. Try again.\n";
            }
        }
    }
