货币单位换算

货币单位换算每行记录一条金额 金额带有货币单位 格式为数字 单位 可能是单独元 或者单独分 或者元与分的组合

大家好,欢迎来到IT知识分享网。

题目描述

记账本上记录了若干条多国货币金额,需要转换成人民币分(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://haidsoft.com/147088.html

(0)
上一篇 2025-04-09 22:33
下一篇 2025-04-09 22:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信