2021-09-11

货币换算

一、题目描述

系统需要提供人民币(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++代码分析

  1. 输入非法检查
  2. 字符串表示方式
  3. 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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值