博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1022 计算器的改良
阅读量:5273 次
发布时间:2019-06-14

本文共 1928 字,大约阅读时间需要 6 分钟。

---恢复内容开始---

 

洛谷P1022 计算器的改良

题目背景

NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能。实验室将这个任务交给了一个刚进入的新手ZL先生。

题目描述

为了很好的完成这个任务,ZLZL先生首先研究了一些一元一次方程的实例:

4+3x=8

6a-5+1=2-2a

-5+12y=0

ZLZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及+、-、=这三个数学符号(当然,符号“-”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。

你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。

输入格式

一个一元一次方程。

输出格式

解方程的结果(精确至小数点后三位)。

输入输出样例

输入 #1复制
6a-5+1=2-2a
输出 #1复制
a=0.750

#include
using namespace std;string sentence;int dl1,dl2,ta;//系数&常数项 int xs(int n,int t){ if(sentence[n]>='0'&&sentence[n]<='9') return xs(n+1,t*10+sentence[n]-'0'); ta=n; return t;}int main(){ getline(cin,sentence); char x; int zf=1,w=0,t=-1,fh; while(sentence[++t]!='\0') { fh=1; if(sentence[t]=='=') { zf=-1; continue; } if(sentence[t]=='-') { fh=-1; t++; } if(sentence[t]>='a'&&sentence[t]<='z') { x=sentence[t]; dl1+=zf*fh; continue; } if(sentence[t]<='9'&&sentence[t]>='0') { int n=xs(t,0); t=ta; if(sentence[t]>='a'&&sentence[t]<='z') { dl1+=n*zf*fh; x=sentence[t]; } else { dl2+=n*zf*fh; t--; } } } cout<
<<"="; //double会出现-0的情况! double ans= -dl2/(dl1*1.0); if(ans==-0.000) ans=0.000; printf("%.3lf",ans); return 0;}

solution

首先一次性读入这个式子

再逐个判断

遇到等号就把zf(正负)设为-1

(zf在循环前要设为1)

遇到减号/负号就把fh(符号)设为-1

(fh在每次循环开始时要初始化为1)

遇到数字就进入函数,返回这个数字串的实值

同时看下一位是不是字母,是的话就放到dl1(系数)里,否则放到dl2(常数项)里

最后移项(*-1)

系数化为一

double是有-0的!!!

这就是为什么总有一个点过不去,答案是0。000,一般程序则会输出-0.000

所以加一个特判

如果ans是-0.000,ans=0.000

The End

很重要!!!

 

转载于:https://www.cnblogs.com/send-off-a-friend/p/11260084.html

你可能感兴趣的文章
实训第五天
查看>>
平台维护流程
查看>>
2012暑期川西旅游之总结
查看>>
Linux发行版的排行
查看>>
12010 解密QQ号(队列)
查看>>
2014年辛星完全解读Javascript第一节
查看>>
装配SpringBean(一)--依赖注入
查看>>
UESTC-我要长高 DP优化
查看>>
java选择文件时提供图像缩略图[转]
查看>>
方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
查看>>
Matlab parfor-loop并行运算
查看>>
string与stringbuilder的区别
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>
java易错题----静态方法的调用
查看>>
php建立MySQL数据表
查看>>