2025年货币单位换算

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

题目描述

记账本上记录了若干条多国货币金额,需要转换成人民币分(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;
}

 

编程小号
上一篇 2025-03-12 17:30
下一篇 2025-02-10 07:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/106852.html