2016-01-22 40 views
0

我一直在嘗試創建一個將其他形式的全球貨幣(如日元,克朗和英鎊)轉換爲美元的工作程序。我已經嘗試設置貨幣價值(轉換爲美元),並參考谷歌的經濟匯率。 該程序使用constexprs初始化對應於不同貨幣的數值,以及使用switch語句表示用於轉換的不同貨幣的字符。但是,我無法按預期工作。C++ - 如何使用switch-statement和constexprs獲得工作貨幣轉換器?

在運行時,編譯項目構建後,任何值都會自動引用switch語句的「default:」段。 任何幫助,我將如何能夠得到這個正常工作表示讚賞。

我的包含來自標準C++庫頭文件,其中主頭文件包括:#include iostream #include fstream #include sstream #include cmath #include cstdlib #include string #include list #include vector #include algorithm #include stdexcept

這是我的代碼:

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

正確形式切換/的情況是:

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

否則你只是通過所有的陳述。

也不要乘以'a','a'的整數值是97,所以你乘以0.15 * 97的情況下。

您的輸入也似乎不是你要找的。

你寫的方式: cin >> currency >> amount >> yuan >> kroner >> pound;

將採用字符(貨幣),金額(雙倍)和三個字符(人民幣,克朗,磅)的輸入。通過這樣覆蓋字符。

+0

謝謝!我忘了休息時間。 – Rudis