poj2121
题目意思:
将英文表示的数字转换成阿拉伯数字
#include <iostream>
#include<map>
#include<stdio.h>
using namespace std;
int main()
{
map<string,int> m;
m["negative"] = -1;
m["zero"] = 0;
m["one"] = 1;
m["two"] = 2;
m["three"] = 3;
m["four"] = 4;
m["five"] = 5;
m["six"] = 6;
m["seven"] = 7;
m["eight"] = 8;
m["nine"] = 9;
m["ten"] = 10;
m["eleven"] = 11;
m["twelve"] = 12;
m["thirteen"] = 13;
m["fourteen"] = 14;
m["fifteen"] = 15;
m["sixteen"] = 16;
m["seventeen"] = 17;
m["eighteen"] = 18;
m["nineteen"] = 19;
m["twenty"] = 20;
m["thirty"] = 30;
m["forty"] = 40;
m["fifty"] = 50;
m["sixty"] = 60;
m["seventy"] = 70;
m["eighty"] = 80;
m["ninety"] = 90;
m["hundred"] = 100;
m["thousand"] = 1000;
m["million"] = 1000000;
string s;
char c;
int flag=0,sum=0,ans=0;
while(cin>>s)
{
if(m[s]==-1)
flag=1;
else if(m[s]==1000||m[s]==1000000)
sum+=ans*m[s],ans=0;
else if(m[s]==100)
ans*=100;
else
ans+=m[s];
if((c=getchar())=='\n')
{
if(flag==1)
cout<<"-"<<sum+ans<<endl;
else
cout<<sum+ans<<endl;
flag=sum=ans=0;
}
}
return 0;
}