CODE[VS]1015 计算器的改良
2017-09-05 16:53
295 查看
题目:http://codevs.cn/problem/1015/
思路:将方程式简化为一个系数,一个常数,然后计算未知数值
题解:
思路:将方程式简化为一个系数,一个常数,然后计算未知数值
题解:
/* 1015 计算器的改良 */ #include <stdio.h> #define DEBUG #define toInt(X) (X-'0') #define MAXL 200 char equation[MAXL]; /* 方程式 */ double coefficient; /* 系数 */ double constant; /* 常数 */ double unknown_n; /* 未知数值 */ char unknown_ch; /* 未知数字符 */ /* 获取系数,常数,未知数字符 */ void deal_equation(){ double t; /* 临时值 */ char ch; /* 当前方程式字符 */ int i; /* 索引 */ double sign; /* 符号位 */ int is_left; /* 当前值位于等号的左边还是右边 */ /* 初始化索引指,符号位,等号位置,系数和常数 */ i = 0; t = 0.0; is_left = 1; sign = 1.0; coefficient = constant = 0.0; while('\0' != (ch = equation[i++])){ /* 下一个字符为数字 */ if(ch >= '0' && ch <= '9'){ if(0.0 == t){ t = toInt(ch) * sign * is_left; } else{ t = t * 10.0 + toInt(ch) * sign * is_left; } } /* 下一个字符为未知数字符, 上一次获取值为系数 */ else if(ch >= 'a' && ch <= 'z'){ if(0.0 == t){ t = 1.0 * sign * is_left; } unknown_ch = ch; coefficient = coefficient + t; t = 0.0; sign = 1; } /* 下一个字符为 '-' 操作符, 上一个值为常数,下一个符号为负 */ else if(ch == '-'){ constant = constant + t; t = 0.0; sign = -1; } /* 下一个字符为 '+' 操作符, 上一个值为常数,下一个符号为正 */ else if(ch == '+'){ constant = constant + t; t = 0.0; sign = 1; } /* 下一个字符为 '=' 操作符, 上一个值为常数,反转等号后的符号 */ else if(ch == '='){ constant = constant + t; t = 0.0; sign = 1; is_left = -1; } } /* 最后一个常量加入到常数中 */ constant = constant + t; } /* 主函数入口 */ int main(int argc, char *argv[]) { #ifdef DEBUG FILE *fp; if(NULL == (fp = fopen("data.txt", "r"))){ return 1; } #endif /* 获取方程式 */ #ifdef DEBUG fscanf(fp, "%s", equation); #else scanf("%s", equation); #endif /* 分析方程式,获取系数,常数和未知字符 */ deal_equation(); unknown_n = constant / coefficient * -1.0; printf("%c=%0.3f", unknown_ch, unknown_n); #ifdef DEBUG fclose(fp); #endif return 0; }
相关文章推荐
- codevs.1015 计算器的改良
- NOIP2000普及组 计算器的改良 Codevs1015 字符串复杂处理
- codevs 1005 计算器的改良
- CODE-1015 计算器的改良
- 1015 计算器的改良
- 1015 计算器的改良
- CODEVS 1015 计算器的改良
- 【codevs1565】【BZOJ2242】计算器,数论练习
- 1015 计算器的改良(维基oi)
- 【codevs 1015】计算器的改良
- BZOJ_P2242&Codevs_P1565[SDOI2011]计算器(快速幂+扩展欧几里得+BSGS)
- wikioi 1015 计算器的改良 普及组 2000
- 通过vscode执行python程序
- bzoj2442&&codevs4654 单调队列优化dp
- [CODE【VS】]江哥的DP题d
- VS Code使用
- codevs1391 伊吹萃香
- Codevs2157 配对
- code vs 2639 约会计划
- Codevs 1851 越狱