Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
好心肠的来帮我测试一下,位什么总石WA???? 看有什么答案和我的输出不一样#include <iostream.h> #include <string.h> #define cmp(s) strcmp(s, str) int getnum(char *str) { if(cmp("zero") == 0) return 0; else if(cmp("one") == 0) return 1; else if(cmp("two") == 0) return 2; else if(cmp("three") == 0) return 3; else if(cmp("four") == 0) return 4; else if(cmp("five") == 0) return 5; else if(cmp("six") == 0) return 6; else if(cmp("seven") == 0) return 7; else if(cmp("eight") == 0) return 8; else if(cmp("nine") == 0) return 9; else if(cmp("ten") == 0) return 10; else if(cmp("eleven") == 0) return 11; else if(cmp("twelve") == 0) return 12; else if(cmp("thirteen") == 0) return 13; else if(cmp("fourteen") == 0) return 14; else if(cmp("fifteen") == 0) return 15; else if(cmp("sixteen") == 0) return 16; else if(cmp("seventeen") == 0) return 17; else if(cmp("eighteen") == 0) return 18; else if(cmp("nineteen") == 0) return 19; else if(cmp("twenty") == 0) return 20; else if(cmp("thirty") == 0) return 30; else if(cmp("forty") == 0) return 40; else if(cmp("fifty") == 0) return 50; else if(cmp("sixty") == 0) return 60; else if(cmp("seventy") == 0) return 70; else if(cmp("eighty") == 0) return 80; else if(cmp("ninety") == 0) return 90; else if(cmp("hundred") == 0) return 100; else if(cmp("thousand") == 0) return 1000; else if(cmp("million") == 0) return 1000000; else if(cmp("negative") == 0) return -1; return -2; } int main() { bool over = false; int sum, n , t, state , len, i, j, sign , cur; int num[30]; char input[200], substring[20]; while(1) { cin.getline(input, 100,'\n'); len = (int)strlen(input); if( len == 0) break; i = 0; t = 0; while(i < len) { while(input[i] == ' ' && input[i] != '\0') i++; j = 0; while(input[i] != ' ' && input[i] != '\0') substring[j++] = input[i++]; substring[j] = '\0'; num[t++] = getnum(substring); } num[t++] = -2; len = t; t = 0; sign = 1; if(num[0] == -1){ sign = -1; t++ ;} sum = 0; state = 1; n = 0; over = false; cur = num[t++]; while(!over) { switch(state) { case 1: n = cur; cur = num[t++]; if(cur == -2){ sum += n; over = true; } else if(cur >= 0 && cur <= 90) state = 2; else if(cur == 100) state = 3; else if(cur == 1000) state = 4; else if(cur == 1000000) state = 8; break; case 2: n += cur; cur = num[t++]; if(cur == -2){ sum += n; over = true; } else if(cur == 100) state = 3; else if(cur == 1000) state = 4; else if(cur == 1000000) state = 8; break; case 3: n *= 100; cur = num[t++]; if(cur == -2){ sum += n; over = true; } else if(cur >= 0 && cur <= 90) state = 5; else if(cur == 1000) state = 4; else if(cur == 1000000) state = 8; break; case 4: sum += n*1000; cur = num[t++]; if(cur == -2) over = true; else if(cur >= 0 && cur <= 90) state = 1; break; case 5: n += cur; cur = num[t++]; if(cur == -2){ sum += n; over = true; } else if(cur >= 0 && cur <= 90) state = 7; else if(cur == 1000) state = 4; else if(cur == 1000000) state = 8; break; case 7: n += cur; cur = num[t++]; if(cur == -2){ sum += n; over = true; } else if(cur >= 0 && cur <= 90) state = 1; else if(cur == 1000) state = 4; else if(cur == 1000000) state = 8; break; case 8: sum += n*1000000; cur = num[t++]; if(cur == -2) over = true; else if(cur >= 0 && cur <= 90) state = 1; break; } } cout<<sum*sign<<endl; } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator