poj 2121 Inglish-Number Translator(模拟)
2013-07-15 17:34
323 查看
题目的意思是给你一段英文单词表示的数字,让你转化为数字
EX:
EX:
Sample Input six negative seven hundred twenty nine one million one hundred one eight hundred fourteen thousand twenty two Sample Output 6 -729 1000101 814022
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int judge(char data[]); char data[200]; int sum; char divided[100][20]; int shuzi[100]; int cnt[100],flag; while(gets(data) != NULL)/*字符串信息的读入*/ { int temp = 0; memset(cnt,0,sizeof(cnt)); flag = 0; sum = 0; int k = 0,j = 0,i,key; for( i = 0 ; i < strlen(data) ; i++)/*将整串按照空格进行“分割”*/ { if(data[i] == ' ') { divided[j][k]= '\0'; j++; k = 0; } else { divided[j][k] = data[i]; k++; } } divided[j][k] = '\0'; for( i = 0 ; i <= j ; i++) /*将分割后的单词转化为对应的数字*/ { shuzi[i] = judge(divided[i]); } if(judge(divided[0]) == -1) /*负数处理*/ { key = 1; } else { key = 0; } for( i = key ; i <= j ; i++)/*对所有数进行扫描处理,用到中间变量temp暂时存储*/ { if(shuzi[i] < 100) { temp+=shuzi[i]; } else if(shuzi[i] == 100) { temp*=100; } else { temp*=shuzi[i]; sum+=temp; temp = 0; } } sum+=temp; if(key == 1) { sum = sum*-1; } if(strlen(data) >= 3)/*如果输入的是空串,不做输出.*/ { cout<<sum<<endl; } } return 0; } int judge(char data[])/*转化函数*/ { if(!strcmp(data,"negative")) { return -1; } else if(!strcmp(data,"zero")) { return 0; } else if(!strcmp(data,"one")) { return 1; } else if(!strcmp(data,"two")) { return 2; } else if(!strcmp(data,"three")) { return 3; } else if(!strcmp(data,"four")) { return 4; } else if(!strcmp(data,"five")) { return 5; } else if(!strcmp(data,"six")) { return 6; } else if(!strcmp(data,"seven")) { return 7; } else if(!strcmp(data,"eight")) { return 8; } else if(!strcmp(data,"nine")) { return 9; } else if(!strcmp(data,"ten")) { return 10; } else if(!strcmp(data,"eleven")) { return 11; } else if(!strcmp(data,"twelve")) { return 12; } else if(!strcmp(data,"thirteen")) { return 13; } else if(!strcmp(data,"fourteen")) { return 14; } else if(!strcmp(data,"fifteen")) { return 15; } else if(!strcmp(data,"sixteen")) { return 16; } else if(!strcmp(data,"seventeen")) { return 17; } else if(!strcmp(data,"eighteen")) { return 18; } else if(!strcmp(data,"nineteen")) { return 19; } else if(!strcmp(data,"twenty")) { return 20; } else if(!strcmp(data,"thirty")) { return 30; } else if(!strcmp(data,"forty")) { return 40; } else if(!strcmp(data,"fifty")) { return 50; } else if(!strcmp(data,"sixty")) { return 60; } else if(!strcmp(data,"seventy")) { return 70; } else if(!strcmp(data,"eighty")) { return 80; } else if(!strcmp(data,"ninety")) { return 90; } else if(!strcmp(data,"hundred")) { return 100; } else if(!strcmp(data,"thousand")) { return 1000; } else if(!strcmp(data,"million")) { return 1000000; } }
/*对于数据 (one thousand one million),按照优先级来应该是1000000000,但是程序跑的结果是1001000,应该是数据弱了的结果*/ pass:正确的做法应该是按照栈的算式应用,根据 hundred,thousand,milloin的优先级来进行计算。
相关文章推荐
- POJ-2121 Inglish-Number Translator-数字英译汉
- poj 2121-Inglish-Number Translator
- poj2121 模拟
- poj 2121 Inglish-Number Translator 将英文翻译成罗马数字
- poj 2121——Inglish-Number Translator
- POJ2121 ZOJ2311 Inglish-Number Translator【map+字符串比较+水题】
- POJ 2121 Inglish-Number Translator
- POJ 2121 Inglish-Number Translator
- poj 2121 Inglish-Number Translator
- (字符串的模式匹配4.7.12)POJ 2121 Inglish-Number Translator(将英文数字转换成阿拉伯数字)
- poj 2121 Inglish-Number Translator
- POJ 2121 Inglish-Number Translator
- POJ2121——Inglish-Number Translator
- POJ 2121 Inglish-Number Translator 笔记
- poj 2121 Inglish-Number Translator
- POJ 2506 Tiling (递推 + 大数加法模拟 )
- POJ 2121 English-Number Translator (散列)
- 贪心+模拟-poj-1017-Packets
- poj1852——Ants(模拟)
- POJ 3087 Shuffle'm Up(神之模拟)