拼音翻译为阿拉伯数字

该程序实现将拼音转换成阿拉伯数字的功能。

如输入:WuShiWu

则输出:55

#include<cctype>
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
    string name[]={"Shi","Bai","Qian","Wan"};
    string numchar[]={"Ling","Yi","Er","San","Si","Wu","Liu","Qi","Ba","Jiu"};
    string input;
    cin>>input;
    int i,j=0,k,l,result=0,count;
    string tmp[10];
    char number[10];
    for(i=0;i<input.size();)
    {
        count=0;
        while(islower(input[i+1]))
        {
            count++;
            i++;
        }
        tmp[j++]=input.substr(i-count,count+1);
        i++;
    }
    for(i=0;i<j;i++)
    {
        for(k=0;k<10;k++)
        {
            if(tmp[i]==numchar[k])
            {
                number[i]=k+'0';
                break;
            }
        }
        if(k==10)
        {
            for(l=0;l<4;l++)
            {
                if(tmp[i]==name[l])
                {
                    number[i]=name[l][0];
                    break;
                }
            }
        }
    }
    map<char,int> icmap;
    icmap['S']=10;
    icmap['B']=100;
    icmap['Q']=1000;
    icmap['W']=10000;


    for(i=0;i<j;i++)
    {
        if(isdigit(number[i])&&isupper(number[i+1]))
        result+=(number[i]-'0')*icmap[number[i+1]];
    }
    if(isdigit(number[j-1]))
    result+=number[j-1]-'0';
    cout<<result<<endl;
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值