题目:拼音翻译成阿拉伯数字
输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万
为了处理方便,输入一定是数字带单位的,例如10会是YiShi,而不是一个单独的Shi.
输入 JiuWanJiuQianJiuBaiJiuShiJiu
输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万
为了处理方便,输入一定是数字带单位的,例如10会是YiShi,而不是一个单独的Shi.
输入 JiuWanJiuQianJiuBaiJiuShiJiu
输出 99999
输入 一十九
输出19
输入五十五
输出55
输入五
输出5
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int str2num(string str)
{
char* p[]={"Ling","Yi","Er","San","Si","Wu","Liu","Qi","Ba","Jiu"};
for(int i=0;i<10;i++)
{
if(str.compare(p[i])==0)
{
return i;
}
}
return -1;
}
int getWeight(string str)
{
char* p[]={"Shi","Bai","Qian","Wan"};
for(int i=0;i<4;i++)
{
if(str.compare(p[i])==0)
{
return pow(10.0,i+1);
}
}
return -1;
}
int main()
{
int num=0;
string str;
cout<<"请输入一串字符串:";
cin >>str;
for(int i=0;i<str.size();)
{
string temp;
int base,weight=1;
if(str[i]>='A'&&str[i]<='Z')
{
int start=i,len=1;
i++;
while(str[i]>='a'&&str[i]<='z'&&i<str.size())
{
len++;
i++;
}
temp=str.substr(start,len);
base=str2num(temp);
}
if(str[i]>='A'&&str[i]<='Z')
{
int start=i,len=1;
i++;
while(str[i]>='a'&&str[i]<='z'&&i<str.size())
{
len++;
i++;
}
temp=str.substr(start,len);
weight=getWeight(temp);
}
num+=base*weight;
}
cout<<num;
}