Unusual char behavior

I write this code just for fun, learning if-else statements. There is a strange behavior when I figure 10e, the program returns an error, but I can’t understand why! I mean, with another device, such as "d" or "y", it works fine, but when I get the number "e", it goes!

In principle, the program converts the number entered by the user into the block that follows this number. For example, if you are 10 d , it will return, which is 10 £ in Japanese yen.

Take a look:

// money_exchange.cpp : A money exchange simulator that converts any rate to pound.
// The standard rates can be updated daily.


#include "stdafx.h"
#include "../../Library/std_lib_facilities.h"

// 19/03/18 - Exchange Rates
const double euro = 1.13706;
const double dollar = 1.40369;
const double krone = 1.83428;
const double yen = 148.816;

double user_pocket = 0.0;
double user_account = 100.0;
string user_name = "ernest";
string user_pass = "pass";

int main()
{
    cout << "Good Morning. Exchange rates loading...\n";
    cout << "Please login into your account by writing username and password separated by a whitspace: ";
    string login_name = " ";
    string login_pass = " ";

    cin >> login_name >> login_pass;

    if (login_name == user_name && login_pass == user_pass) {
        // User information resume:
        cout << "\nWelcome " << user_name << ". I'm loading your information...\n";
        cout << "Name: " << user_name << "\nPocket: " << user_pocket << " GBP" << "\nAccount: " << user_account << " GBP\n";

        // Options available
        cout << "\nI'm sorry but the only options available is: Exchange Rates\n";
        cout << "Please digit the amount of money you would like to convert followed by a unit ( E,D,Y,K ): ";
        double money = 0.0;
        char unit = ' ';
        cin >> money >> unit;

        // Convertion selection
        if (unit == 'e') {
            cout << "\nResult: " << money << "GBP = " << euro * money << "EUR\n";
            cout << "At the moment I can execute just one computation at time, please restart the application.\n";
            cout << "Thank you " << user_name << '\n';
        }
        else if (unit == 'd')
        {
            cout << "\nResult: " << money << "GBP = " << dollar * money << "USD\n";
            cout << "At the moment I can execute just one computation at time, please restart the application.\n";
            cout << "Thank you " << user_name << '\n';
        }
        else if (unit == 'k')
        {
            cout << "\nResult: " << money << "GBP = " << krone * money << "NOK\n";
            cout << "At the moment I can execute just one computation at time, please restart the application.\n";
            cout << "Thank you " << user_name << '\n';
        }
        else if (unit == 'y')
        {
            cout << "\nResult: " << money << "GBP = " << yen * money << "JPY\n";
            cout << "At the moment I can execute just one computation at time, please restart the application.\n";
            cout << "Thank you " << user_name << '\n';
        }
        else
        {
            cout << "\nSomething went wrong! Make sure to follow the instruction ( 10y will produce 10 pound in Yen )";
            cout << "\nAt the moment I can execute just one computation at time, please restart the application.\n";
            cout << "Thank you " << user_name << '\n';
        }
    }
    else
    {
        // Login failed
        cout << "\nUsername or Password not in the database, please try again!";
    }

    keep_window_open();

    return 0;
}

, 10e, , . 10 (), . , . , , , .

+4
1

, money . ++ (e), cin 10e 10 * 10 ^ (?). , .

+7

Source: https://habr.com/ru/post/1695074/


All Articles