货币换算
一、题目描述
系统需要提供人民币(CNY)、美元(USD)、英镑(GBP)、港币(HKD)价值转换功能。
为简单处理,可以参考如下:
1 CNY = 2 HKD
1 USD = 8 CNY
1 GBP = 2 USD
MAX:
currency(1200,CNY)= 75 GBP
currency(127,HKD)= 3 GBP 1 USD 7 CNY 1 HKD
MIN
currency(20,CNY)= 40 HKD
二、C++代码分析
- 输入非法检查
- 字符串表示方式
- MAX和MIN处理逻辑
三、代码示例
#include <iostream>
#include <string>
#include <vector>
#include <stack>
using namespace std;
int main()
{
vector <string> str_array(4);
str_array[0] = "GBP";
str_array[1] = "USD";
str_array[2] = "CNY";
str_array[3] = "HKD";
vector <string> way = {"MIN","MAX"};
vector <int> a(4);
string U,w;
int value;
int value_tmp;
stack<int> q;
cin>>a[0]>>a[1]>>a[2]>>a[3]>>U>>w;
for(int i = 0; i < 3; i++)//检查输入是否异常
{
if (a[i] <= 0)
{
cout<< "error input" << endl;
return 0;
}
}
if(w == way[0])
{
if(U == str_array[0])
{
value = a[3]*a[0]*a[1]*a[2];
}
else if(U == str_array[1])
{
value = a[3]*a[1]*a[2];
}
else if(U == str_array[2])
{
value = a[3]*a[2];
}
else
{
value = a[3];
}
cout<<value<<" "<<str_array[3]<<endl;
}
// else if(w == way[1])
// {
// if(U == str_array[0])
// {
// value = a[3];
// cout<<value<<" "<<str_array<<endl;
// }
// else if(U == str_array[1])
// {
// value=a[3]%a[0];
// q.push(value);
// value=a[3]/a[0];
// q.push(value);
// for(int i=0;i<2;i++)
// {
// cout<<q.top()<<str_array[i]<<" ";
// q.pop();
// }
// cout<<endl;
// }
// else if(U == str_array[2])//方案1
// {
// value=a[3]%a[1];
// q.push(value);
// value=a[3]/a[1]%a[0];
// q.push(value);
// value=a[3]/a[1]/a[0];
// q.push(value);
// for(int i=0;i<3;i++)
// {
// cout<<q.top()<<str_array[i]<<" ";
// q.pop();
// }
// cout<<endl;
// }
// else if(U == str_array[3])
// {
// value=a[3]%a[2];
// q.push(value);
// value[0]=a[3]/a[2]%a[1];
// q.push(value);
// value=a[3]/a[2]/a[1]%a[0];
// q.push(value);
// value=a[3]/a[2]/a[1]/a[0];
// q.push(value);
// for(int i=0;i<4;i++)
// {
// cout<<q.top()<<str_array[i]<<" ";
// q.pop();
// }
// cout<<endl;
// }
// else if(w == way[1])//方案2
// {
// int i;
// for(i = 0; i < 4; i++)
// {
// if(str_array[i] == U)
// {
// break;
// }
// }
// value = a[3];
// switch (i)
// {
// case 3:
// value_tmp = value%a[2];
// q.push(value_tmp);
// value = value/a[2];
// case 2:
// value_tmp = value%a[1];
// q.push(value_tmp);
// value = value/a[1];
// case 1:
// value_tmp = value%a[0];
// q.push(value_tmp);
// value = value/a[0];
// case 0:
// value_tmp = value;
// q.push(value_tmp);
// break;
// default:
// break;
// }
// for(int j = 0; j <= i; j++)
// {
// cout << q.top() << str_array[j] << " ";
// q.pop();
// }
// cout << endl;
// }
else if(w == way[1])//方案三
{
int i;
for(i = 0; i < 4; i++)
{
if(str_array[i] == U)
{
break;
}
}
value = a[3];
for(int k = i; k >= 0; k--)
{
if(k > 0)
{
value_tmp = value%a[k-1];
value = value / a[k-1];
}
else
{
value_tmp = value;
}
q.push(value_tmp);
}
for(int j = 0; j <= i; j++)
{
if(q.top())
cout << q.top() <<" "<< str_array[j] << " ";
q.pop();
}
cout << endl;
}
return 0;
}