您的位置:首页 > 其它

poj 2121 字符串(英文数字->阿拉伯数字)

2015-03-25 20:35 441 查看
题意:把英文的数字翻译成阿拉伯数字。

思路:字符串模拟。

#include <cstdio>
#include <map>
#include <string>
using namespace std;
map<string,int>mm;
char s[2000],t[2000];
void init(){
mm["zero"] = 0;
mm["one"] = 1;
mm["two"] = 2;
mm["three"] = 3;
mm["four"] = 4;
mm["five"] = 5;
mm["six"] = 6;
mm["seven"] = 7;
mm["eight"] = 8;
mm["nine"] = 9;
mm["ten"] = 10;
mm["eleven"] = 11;
mm["twelve"] = 12;
mm["thirteen"] = 13;
mm["fourteen"] = 14;
mm["fifteen"] = 15;
mm["sixteen"] = 16;
mm["seventeen"] = 17;
mm["eighteen"] = 18;
mm["nineteen"] = 19;
mm["twenty"] = 20;
mm["thirty"] = 30;
mm["forty"] = 40;
mm["fifty"] = 50;
mm["sixty"] = 60;
mm["seventy"] = 70;
mm["eighty"] = 80;
mm["ninety"] = 90;
mm["hundred"] = 100;
mm["thousand"] = 1000;
mm["million"] = 1000000;
}
int main(){
int res = 0,now = 0;
char ch;
init();
while(scanf("%s",s)!=EOF){
if(!strcmp(s, "negative")){
printf("-");
continue;
}
if(mm[s] == 1000000){
res += now*1000000;
now = 0;
}else if(mm[s] == 1000){
res += now*1000;
now = 0;
}else if(mm[s] == 100){
now *= 100;
}else{
now += mm[s];
}
if((ch=getchar()) && ch=='\n'){
printf("%d\n",res+now);
now = res = 0;
}

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐