题目描述
记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。
每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分,或者元与分的组合。
要求将这些货币全部换算成人民币分(fen)后进行汇总,汇总结果仅保留整数,小数部分舍弃。
元和分的换算关系都是1:100,如下:
1CNY=100fen(1元=100分)
1HKD=100cents(1港元=100港分)
1JPY=100sen(1日元=100仙)
1EUR=100eurocents(1欧元=100欧分)
1GBP=100pence(1英镑=100便士)
汇率表如下:
CNY | JPY | HKD | EUR | GBP |
---|---|---|---|---|
100 | 1825 | 123 | 14 | 12 |
即:100CNY = 1825JPY = 123HKD = 14EUR = 12GBP
输入描述
第一行输入为N,N表示记录数。0<N<100
之后N行,每行表示一条货币记录,且该行只会是一种货币。
输出描述
将每行货币转换成人民币分(fen)后汇总求和,只保留整数部分。
输出格式只有整数数字,不带小数,不带单位。
用例1
输入
1
100CNY
Copy
输出
10000
Copy
说明
100CNY转换后是10000fen,所以输出结果为10000
用例2
输入
1
3000fen
Copy
输出
3000
Copy
说明
3000fen,结果就是3000
用例3
输入
1
123HKD
Copy
输出
10000
Copy
说明
HKD与CNY的汇率关系是123:100,所以换算后,输出结果为10000
用例4
输入
2
20CNY53fen
53HKD87cents
Copy
输出
6432
Copy
说明
20元53分 + 53港元87港分,换算成人民币分后汇总,为6432
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
int getResult(const vector<string>& arr) {
//无论传进来的货币单位是什么都转成人民币的分
unordered_map<string, double> exchange;
exchange["CNY"] = 100.0; //1元=100分
exchange["JPY"] = 100.0 / 1825 * 100; //1日元 = 多少仙
exchange["HKD"] = 100.0 / 123 * 100; //1港币= 多少港分
exchange["EUR"] = 100.0 / 14 * 100; //1欧元= 多少欧分
exchange["GBP"] = 100.0 / 12 * 100; //1英镑= 英分
exchange["fen"] = 1.0; //1分=多少分
exchange["cents"] = 100.0 / 123; //1港分= 多少分
exchange["sen"] = 100.0 / 1825; //1日分= 多少分
exchange["eurocents"] = 100.0 / 14; //1欧分 = 多少分
exchange["pence"] = 100.0 / 12; //英分= 多少分
//存最终结果
double ans = 0.0;
//不论是几行货币输入都要转成最后的一个以分为单位的数字 所以拼接成一个字符串就行
string str;
for (const auto& s : arr) str += s;
str += "0";
cout<<str<<endl;
string num;//存数字
string unit;//存货币单位
for (char c : str) {
if (c >= '0' && c <= '9') {
//有单位则将num转为整型 并进行换算
if (!unit.empty()) {
//不断累加最终结果数字
ans += stoi(num) * exchange[unit];
num = "";
unit = "";
}
//无单位则只拼接数字
num += c;
}
else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
//是字母就拼接unit(单位)
unit += c;
}
}
return static_cast<int>(ans);
}
int main() {
int n;
cin >> n;
vector<string> arr(n);
for (int i = 0; i < n; ++i) {
cin >> arr[i];
}
cout << getResult(arr) << endl;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/106852.html