UVA327- Evaluating Simple C Expressions
2013-08-22 21:26
447 查看
思路:主要在要开两个数组,一个数组存数改变前的值,另一个数组存数改变后的值
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int main(){ char str[200]; while (gets(str) != NULL) { printf("Expression: "); puts(str); char s[200]; memset(s, 0, sizeof(s)); int num1[26], num2[26], vis[26]; int cnt = 0; for(int i = 0;i < strlen(str); i++) if (str[i] == '+' || str[i] == '-' || isalpha(str[i])) s[cnt++] = str[i]; for(int i = 0;i < 26; i++) { num1[i] = i + 1; num2[i] = i + 1; vis[i] = 0; } for(int i = 0;i < cnt; i++) { if (isalpha(s[i])) vis[s[i] - 'a'] = 1; if (s[i] == '+' && s[i + 1] == '+' && isalpha(s[i + 2])) { vis[s[i + 2] - 'a'] = 1; num1[s[i + 2] - 'a']++; num2[s[i + 2] - 'a']++; s[i] = '#'; s[i + 1] = '#'; } if (s[i] == '-' && s[i + 1] == '-' && isalpha(s[i + 2])) { vis[s[i + 2] - 'a'] = 1; num1[s[i + 2] - 'a']--; num2[s[i + 2] - 'a']--; s[i] = '#'; s[i + 1] = '#'; } if (isalpha(s[i]) && s[i + 1] == '+' && s[i + 2] == '+') { vis[s[i] - 'a'] = 1; num1[s[i] - 'a']++; s[i + 1] = '#'; s[i + 2] = '#'; } if (isalpha(s[i]) && s[i + 1] == '-' && s[i + 2] == '-') { vis[s[i] - 'a'] = 1; num1[s[i] - 'a']--; s[i + 1] = '#'; s[i + 2] = '#'; } } int flag = 1, sum = 0; for(int i = 0;i < cnt ; i++) { if (isalpha(s[i]) && flag) { sum += num2[s[i] - 'a']; flag = 0; } else if (s[i] == '+' || s[i] == '-') { if (s[i] == '+') { for(int j = i; ; j++) if (isalpha(s[j])) { sum += num2[s[j] - 'a']; break; } } if (s[i] == '-') { for(int j = i; ; j++) if (isalpha(s[j])) { sum -= num2[s[j] - 'a']; break; } } } } printf(" value = %d\n", sum); for(int i = 0;i < 26; i++) { if (vis[i]) { printf(" %c = %d\n", i + 'a', num1[i]); } } } return 0; }
相关文章推荐
- uva 327 - Evaluating Simple C Expressions
- uva 327 - Evaluating Simple C Expressions
- UVA - 327 Evaluating Simple C Expressions
- UVA_327_Evaluating Simple C Expressions
- uva 327--Evaluating Simple C Expressions
- UVA - 327 Evaluating Simple C Expressions
- UVA 327 - Evaluating Simple C Expressions
- Uva 327 - Evaluating Simple C Expressions
- UVA 327 - Evaluating Simple C Expressions
- uva_327_Evaluating Simple C Expressions
- uva 327 Evaluating Simple C Expressions
- uva 327 Evaluating Simple C Expressions
- UVA - 327 Evaluating Simple C Expressions
- uva 327 Evaluating Simple C Expressions
- UVa 327 Evaluating Simple C Expressions
- UVA - 327 Evaluating Simple C Expressions
- UVa 327 - Evaluating Simple C Expressions
- uva 327 Evaluating Simple C Expressions 简易C表达式计算 stl模拟
- uva 327 Evaluating Simple C Expressions 简易C表达式计算 stl模拟
- uva 327 - Evaluating Simple C Expressions