CODEVS 1015 计算器的改良
2018-03-18 13:21
531 查看
题目 http://codevs.cn/problem/1015/
热身题,很直接的写法,直观易理解,代码结构可以自己整理一下
基本思想
一旦遇到运算符就一定将缓冲区的数据转储
一旦遇到等号,则正负号相反对待
一旦遇到字母,就认为当前缓冲区的数是一次项的系数
一次项和零次项系数分开存储/*
作者:FUNCO_小风
题目:p1015 计算器的改良
*/
#include<stdio.h>
#include<string.h>
int main()
{
// 系数 整数 负号标识
int coe=0, cnt=0, minus=0, i=0;
char in=0,tmp=0,left=1, none=0;
char s[100] = {0};
scanf("%s", s);
for (i=0; i<strlen(s)+1; i++)
{
in = s[i];
if (in == '-')
{
if (minus)
{
cnt -= tmp;
}
else
{
cnt += tmp;
}
minus = left ? 1 : 0;tmp = 0;
}
else if (in == '+')
{
if (minus)
{
cnt -= tmp;
}
else
{
cnt += tmp;
}
minus = left ? 0 : 1;tmp = 0;
}
else if (in == '=' || in == 0)
{
if (minus)
{
cnt -= tmp;
}
else
{
cnt += tmp;
}
minus = 1;
left = 0;tmp = 0;
}
else if (in>='0' && in<='9')
{
tmp = tmp*10+(in-'0');
}
else if (in>='a' && in<='z')
{
if (minus)
{
coe -= tmp > 0 ? tmp : 1;tmp = 0;
}
else
{
coe += tmp > 0 ? tmp : 1;tmp = 0;
}
none = in;
}
if (in == 0)
{
break;
}
}
printf("%c=%.3f\n", none, (-1.0*cnt)/coe);
return 0;
}
热身题,很直接的写法,直观易理解,代码结构可以自己整理一下
基本思想
一旦遇到运算符就一定将缓冲区的数据转储
一旦遇到等号,则正负号相反对待
一旦遇到字母,就认为当前缓冲区的数是一次项的系数
一次项和零次项系数分开存储/*
作者:FUNCO_小风
题目:p1015 计算器的改良
*/
#include<stdio.h>
#include<string.h>
int main()
{
// 系数 整数 负号标识
int coe=0, cnt=0, minus=0, i=0;
char in=0,tmp=0,left=1, none=0;
char s[100] = {0};
scanf("%s", s);
for (i=0; i<strlen(s)+1; i++)
{
in = s[i];
if (in == '-')
{
if (minus)
{
cnt -= tmp;
}
else
{
cnt += tmp;
}
minus = left ? 1 : 0;tmp = 0;
}
else if (in == '+')
{
if (minus)
{
cnt -= tmp;
}
else
{
cnt += tmp;
}
minus = left ? 0 : 1;tmp = 0;
}
else if (in == '=' || in == 0)
{
if (minus)
{
cnt -= tmp;
}
else
{
cnt += tmp;
}
minus = 1;
left = 0;tmp = 0;
}
else if (in>='0' && in<='9')
{
tmp = tmp*10+(in-'0');
}
else if (in>='a' && in<='z')
{
if (minus)
{
coe -= tmp > 0 ? tmp : 1;tmp = 0;
}
else
{
coe += tmp > 0 ? tmp : 1;tmp = 0;
}
none = in;
}
if (in == 0)
{
break;
}
}
printf("%c=%.3f\n", none, (-1.0*cnt)/coe);
return 0;
}
相关文章推荐
- 【codevs 1015】计算器的改良
- CODE-1015 计算器的改良
- 1015 计算器的改良(维基oi)
- CODE[VS]1015 计算器的改良
- NOIP2000普及组 计算器的改良 Codevs1015 字符串复杂处理
- codevs.1015 计算器的改良
- wikioi 1015 计算器的改良 普及组 2000
- 1015 计算器的改良
- 1015 计算器的改良
- 改良用简单工厂模式构造的计算器代码—“反射”技术
- 洛谷 P1022 计算器的改良
- NOIP2000 计算器的改良
- 编程练习——计算器的改良
- 【codevs 1565】【SDOI 2011】计算器 快速幂+拓展欧几里得+BSGS算法
- Vijos P1344计算器的改良(java未AC,如果有神牛来帮我修改,感激不尽啊!)
- 改良用简单工厂模式构造的计算器代码—“反射”技术
- noip2000-计算器的改良 2008.11.5
- NOIP 2000 计算器的改良 解题报告
- [NOIP2000] 提高组 洛谷P1022 计算器的改良
- NOIP2000计算器的改良