C ++ - 如何使用switch-statements和constexprs获得工作货币转换器?

时间:2016-01-22 00:14:57

标签: c++ visual-studio switch-statement currency constexpr

我一直在尝试创建一个将其他形式的全球货币(如日元,克朗和英镑)转换为美元的工作计划。我已经尝试设置货币价值(转换为美元),参考谷歌的经济汇率。 该程序利用constexprs初始化对应于不同货币的数值,以及使用switch语句表示转换的不同货币的字符。但是,我无法按预期工作。

在运行时,在编译项目构建之后,任何值都会自动引用switch语句的“default:”段。 关于我如何才能使其正常工作的任何帮助表示赞赏。

我的包含来自标准C ++库头,其中主标题包括:#include iostream #include fstream #include sstream #include cmath #include cstdlib #include string #include list #include vector #include algorithm #include stdexcept < / p>

这是我的代码:

    int main()

    {

    constexpr double yuan_to_dollar = 0.15; // conversion to USD -- values cannot be modified at runtime

constexpr double kroner_to_dollar = 0.15;

constexpr double pound_to_dollar = 1.42;

char currency;
char yuan = 'a';
char kroner = 'b';
char pound = 'c';

double amount = 1;

cout << "Please enter an integer amount in currency: \n";

cin >> currency >> amount >> yuan >> kroner >> pound; // inputs currency double values

switch (currency) {

case 'a':
    cout << yuan << "is == " << yuan_to_dollar * 'a' * amount << "currency \n";

case 'b':
    cout << kroner << "is == " << kroner_to_dollar * 'b' * amount << "currency \n";

case 'c':
    cout << pound << "is == " << pound_to_dollar * 'c' * amount << "currency \n";

default:
    cout << "Sorry, I could not determine a suitable form of: " << currency << "currency \n";
}

return 0;

}

1 个答案:

答案 0 :(得分:1)

开关/案例的正确形式是:

switch(currency) {
    case 'a':
        // code in case of a here
        break;
    case 'b':
        // code for b here
        break;
    default:
        // default case
}

否则你只是落实所有陈述。

也不要乘以'a','a'的整数值为97,所以在a的情况下你乘以0.15 * 97。

您的输入似乎也不是您想要的。

你写的方式:     cin&gt;&gt;货币&gt;&gt;金额&gt;&gt;元&gt;&gt;克朗&gt;&gt;磅;

将输入字符(货币),金额(双倍)和三个字符(元,克朗,英镑)。你这样做会覆盖这些字符。