1、
题目描述:系统需要提供人民币(CNY)、美元(USD)、英镑(GBP)、港币(HKD) 价值转换功能。为了简单处理,题目的说明和考生调试可以用下面的默认汇率:
1 CNY = 2 HKD
1 USD = 8 CNY
1 GBP = 2 USD
请按照汇率实现货币最大兑换和最小兑换功能。例如:最大兑换,即尽量往价值高的货币兑换: Currency(1200, CNY) = 75 GBP
Currency(127, HKD) = 3 GBP 1 USD 7 CNY 1 HKD
最小兑换,即尽量往价值低的货币兑换,直接转换为多少 HKD 即可。Currency(20, CNY) = 40 HKD
汇率是实时变化的,但是短期内大致符合当前价值规律,即相同数值的货币,价值满足 GBP>USD>CNY>HKD,每组输入数据都会有不同的输入汇率,需要按设置的汇率进行兑换。
解答要求
时间限制: 1000ms, 内存限制: 64MB 输入
示例输入如下:2 8 2 127 HKD MAX
(1) 第 1 个数字表示 1CNY 可以换成多少 HKD。
(2) 第 2 个数字表示 1USD 可以换成多少 CNY
(3) 第 3 个数字表示 1GBP 可以换成多少 USD
(4) 第 4 个和第 5 个 表示 数量和货币类型(大写)
(5) 第 6 个表示最大兑换(MAX)还是最小兑换(MIN)
(6) 需要校验前 4 个数字必须是大于 0 的整数。不合法直接返回”ERROR”
(7) 货币字母大写简称
(HKD、CNY、USD、GBP)、兑换方式字母大写简称(MIN/MAX)需要判断合法性,只有全部字母大写并且内容相同才是合法。
(8) 任何其它形式(空缺、大小写不一致、出现负数、小数点、非法字符等)均不合法,直接输出字符串 “ERROR”
(9) 每个输入数据为一行,前后无空格,数据之间以 1 个空格间隔
(10) 转换代码不需要考虑整数溢出输出
输出字符串 “3 GBP 1 USD 7 CNY 1 HKD”
(1) 注意输出每组货币都是 数字+空格+货币种类简称
(2) 多组不同货币也是以 1 个空格分开,例如 3 GBP 1 USD (3)输出字符串前后没有空格
(4) 输出字符串前后没有双引号(“)
(5) 若输入不合法直接输出字符串”ERROR”
(6) 最大输出时遇到结果为 0 的单位不需要输出。例如输入:2 8 2 17 HKD MAX
错误输出:0 GBP 1 USD 0 CNY 1 HKD 正确输出:1 USD 1 HKD
样例
输入样例 1 复制
2 8 2 127 HKD MAX
1 6 1 127 HKD max
2 8 2 17 HKD MAX
输出样例 1
3 GBP 1 USD 7 CNY 1 HKD
ERROR
1 USD 1 HKD
#include <vector>
#include <iostream>
using namespace std;
int Split(string input, vector<string>& output, string pattern);
string MaxExchange(int count, int cnyToHkd, int usdTocny, int gbpTousd);
string MinExchange(int count);
bool ParamValid(vector<string> param, string& style, string& type, int& cnyToHkd, int& usdTocny, int& gbpTousd,
int& count);
int main(int argc, char** argv)
{
string intput_string;
while (getline(cin, intput_string))
{
// 人民币转港币汇率 美元转人民币汇率 英镑转美元的汇率
int cnyToHkd = 2, usdTocny = 8, gbpTousd = 2;
int count = 0;
string style, type;
vector<string> inputArray; Split(intput_string, inputArray, " ");
// 输入参数转换为对应的值,并做验证
if (!ParamValid(inputArray, style, type, cnyToHkd, usdTocny, gbpTousd, count))
评论0