计算器的改良
2018-03-07 21:29
141 查看
DescriptionNCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任务交给了一个刚进入的新手ZL先生。为了很好的完成这个任务,ZL先生首先研究了一些一元一次方程的实例:
4+3x=8
6a-5+1=2-2a
-5+12y=0
ZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及+、-、=这三个数学符号(当然,符号“-”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。
编写程序,解输入的一元一次方程, 将解方程的结果(精确至小数点后三位)输出至屏幕。
你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。
Input一个一元一次方程式Output方程的结果(精确至小数点后三位)Sample Input6a-5+1=2-2aSample Outputa=0.750SourceNIOP2000普及组第一题详解见代码注释,有一个巧妙之处就是对于符号的处理以及判断。#include<cstdio>
int main()
{
int op=1,dir=1,num=0,a=0,b=0;
char ch,id;
while((ch=getchar())!=EOF)
{
if(ch>='a'&&ch<='z') //如果是变量,
{
id=ch; //用id记录变量名
if(num==0)
num=1; //前面如果没有系数,则系数是1
a+=op*num*dir; //不管有没有,最终都加入运算
num=0; //让num回归常态
}
else if(ch>='0'&&ch<='9') //如果是数字,用num记录下来数值
num=num*10+ch-'0';
else //如果既不是变量,又不是数字,那就是运算符号。
{
b+=op*dir*num; /*巧妙之处*/
num=0; //算是对num、op的一种重置
op=1; //让他们回到原始应该有的状态,不影响以后的操作及判断
if(ch=='=') //dir和op一样,用来表示数值的符号
dir=-1;
else if(ch=='-')
op=-1;
}
}
printf("%c=%.3f",id,(float)-b/a+0); //此处的思想是ax+b=0;即x=-b/a;
return 0;
}觉得不错的老铁们请点个赞,谢谢。
4+3x=8
6a-5+1=2-2a
-5+12y=0
ZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及+、-、=这三个数学符号(当然,符号“-”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。
编写程序,解输入的一元一次方程, 将解方程的结果(精确至小数点后三位)输出至屏幕。
你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。
Input一个一元一次方程式Output方程的结果(精确至小数点后三位)Sample Input6a-5+1=2-2aSample Outputa=0.750SourceNIOP2000普及组第一题详解见代码注释,有一个巧妙之处就是对于符号的处理以及判断。#include<cstdio>
int main()
{
int op=1,dir=1,num=0,a=0,b=0;
char ch,id;
while((ch=getchar())!=EOF)
{
if(ch>='a'&&ch<='z') //如果是变量,
{
id=ch; //用id记录变量名
if(num==0)
num=1; //前面如果没有系数,则系数是1
a+=op*num*dir; //不管有没有,最终都加入运算
num=0; //让num回归常态
}
else if(ch>='0'&&ch<='9') //如果是数字,用num记录下来数值
num=num*10+ch-'0';
else //如果既不是变量,又不是数字,那就是运算符号。
{
b+=op*dir*num; /*巧妙之处*/
num=0; //算是对num、op的一种重置
op=1; //让他们回到原始应该有的状态,不影响以后的操作及判断
if(ch=='=') //dir和op一样,用来表示数值的符号
dir=-1;
else if(ch=='-')
op=-1;
}
}
printf("%c=%.3f",id,(float)-b/a+0); //此处的思想是ax+b=0;即x=-b/a;
return 0;
}觉得不错的老铁们请点个赞,谢谢。
相关文章推荐
- 洛谷 P1022 [NOIP2000 T4] 计算器的改良
- NOIP2000 计算器的改良
- 1015 计算器的改良
- 计算器的改良
- 编程练习——计算器的改良
- [T][1]NOIP 2000 计算器的改良
- 1015 计算器的改良
- [模拟]2000年分区联赛普级组之一 计算器的改良
- 计算器的改良
- 改良用简单工厂模式构造的计算器代码—“反射”技术
- 计算器的改良 (模拟)
- 洛谷——P1022 计算器的改良
- 计算器的改良
- 洛谷Oj-P1022 计算器的改良-字符串
- NOIP 2000 计算器的改良 解题报告
- Tsinsen A1128 计算器的改良
- NOIP2000计算器的改良
- 【codevs 1015】计算器的改良
- CODE-1015 计算器的改良
- CODE[VS]1015 计算器的改良