天天看點

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;
}


           

繼續閱讀