传送

这个题让你通过自己的努力,来写一个可以解一元一次方程的计算题(麻麻再也不用担心我计算错了qwq)

我们先学习一下一元一次方程的解法

step1:移项。把带有未知数的项移到方程的一边,把常数项移到方程的另一边。

step2:系数化一。方程左右两边同时除以未知数的系数

step3:写答(最后别忘了输出是"未知数=....."的格式)

解方程都会,关键是怎么让电脑进行移项。我们在解方程的时候通常把未知数移到左边,常数移到右边,并且在等号右边含有未知数的项是要变号的,在等号左边常数项要变号。所以我们在计算未知数的系数与常数时,可以以等号为划分点,进行计算。

方程用字符串的形式读入,我们也注意到,每一项的起点是发现“+“ ”-” “=”,终点也是如此。所以我们在没有扫描到符号或未知数时,就继续计算当前项的绝对值,当扫描到下一个符号的时候,就将算好的值按照符号与是否扫描过等号累加(这里分别用k,v记录未知数的系数和所有常数项的和)

v/k的值即为答案,注意ans如果是-0,要特判,输出正0(虽然这俩没毛区别,但评测机说你错了你就错了)

一些小坑见代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
char a[],c,aa;//aa记录未知数是什么字符
int m,k,q,v;
bool dy,xs;//dy标记是否扫描过等号,xs标记是否是含未知数的项(系数)
int main()
{
scanf("%s",a);
for(int i=;i<strlen(a);i++)//我们顺序扫描
{if(a[i]=='+'||a[i]=='-'||a[i]=='=')
{
if(dy)//等号右边的项
{if(xs){if(m==)m=;if(c=='-'){k+=m;m=;}else{k-=m;m=;}}//注意若未知数前面不写系数,则系数是1
else{if(c=='-'){v-=m;m=;}else{v+=m;m=;}}
}
if(!dy)//等号左边的项
{if(xs){if(m==)m=;if(c=='-'){k-=m;m=;}else{k+=m;m=;}}
else{if(c=='-'){v+=m;m=;}else{v-=m;m=;}}
}
if(a[i]=='=')dy=;//注意这些的更新顺序
c=a[i]; //记录符号
xs=;
}
else if(a[i]>=''&&a[i]<='') {m=m*+a[i]-;xs=;} //只有是数字的字符才计算
else {xs=;aa=a[i];//记下未知数的字符
}
}
if(xs)//最后一项扫描不到,要补上
{if(c=='-')k+=m;
else k-=m;
}
else
{if(c=='-')v-=m;
else v+=m;
}
double ans;
if(k!=)
ans=1.0*v/k;
else ans=0.000;
if(ans==-)ans=;
cout<<aa<<"="; printf("%.3lf",ans);
}

打了好久qwq

P1022计算器の改良的更多相关文章

  1. P1022 计算器的改良

    P1022 计算器的改良 题目背景 NCL 是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给 ...

  2. 洛谷—— P1022 计算器的改良

    P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...

  3. 洛谷P1022 计算器的改良

    P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...

  4. P1010 幂次方 P1022 计算器的改良

    P1010 幂次方 一.题目 https://www.luogu.org/problemnew/show/P1010 二.代码 #include<bits/stdc++.h> using ...

  5. 2021.07.26 P1022 计算器的改良(字符串)

    2021.07.26 P1022 计算器的改良(字符串) 改进: 如果是我出题,我一定把未知数设为ab.buh.bluesky之类的长度不只是1的字符串! 题意: 一个一元一次方程,求解. 分析: 1 ...

  6. [NOIP2000] 提高组 洛谷P1022 计算器的改良

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

  7. 洛谷——P1022 计算器的改良

    https://www.luogu.org/problem/show?pid=1022#sub 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在 ...

  8. (水题)洛谷 - P1022 - 计算器的改良

    https://www.luogu.org/problemnew/show/P1022 服了,居然还有+0.000和-0.000的不同,真的服了. #include<bits/stdc++.h& ...

  9. 洛谷 P1022 计算器的改良

    题解:字符串模拟 坑点: 1) 0/-1=-0. 这是因为(来自洛谷讨论区某大犇) double下存储的数字会有精度误差,比如0可能被存成0.000000000...01然而如果你乘上或者除以一个负数 ...

随机推荐

  1. [Web 前端] 003 html 表单标签

    目录 表单标签 1. form 标签 2. 表单控件 2.1 登录框 2.2 单选按钮 2.3 多选按钮 3. select 标签 4 文件上传 5. textarea 标签 6. 按钮 7. 隐藏域 ...

  2. Java-XML解析第一篇主流开源类库解析XML

    1.流行的XML解析框架 1>底层解析方式:存在编码复杂性.难扩展.难复用.....想了解底层解析方式请参考:浅谈 Java XML 底层解析方式 2>Dom4j:基于 JAXP 解析方式 ...

  3. 自动生成脚本头部格式并调用VIM工具

    在我们写脚本的时候,开始总要按照脚本书写规范来定义脚本头部格式,久而久之是不是会觉得麻烦效率低下呢,这里就介绍一个好的思路给大家. 1 首先我们在VIM里先复制个头部格式的内容,这里就抄袭一个二师兄的 ...

  4. Java OO知识总结

    接着上一集    https://www.cnblogs.com/pdev/p/11288014.html       5. OO中的一些基本概念 继承 父类的非private方法自动被子类继承 cl ...

  5. Vue实现点击li变色

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. Scrapy抓取jobbole数据

    1.python版本3.6.1 2.python编辑器:JetBrains PyCharm 2.安装virtualenvwrapper-win pip3 install virtualenvwrapp ...

  7. ARM Cortex-M底层技术(3)—编译内核的原理及其应用

    概述: 当前开发中,我使用的Keil开发工具较多(keil526),故以keil为例进行介绍,其他开发环境大同小异. 1. 编译链接的定义 不管我们编写的代码有多么简单,都必须经过「编译 --> ...

  8. python面向对象--包装标准类型及组合方式授权

    # 实现授权是包装的一个特性.包装一个类型通常是对已存在的类型进行一些自定义定制, # 这种做法可以新建,修改,或删除原有产品的某些功能,而其他的保持不变. # 授权的过程,其实也就是所有的更新功能都 ...

  9. SICP 习题解 第二章

    计算机程序的构造和解释习题解答 Structure and Interpretation os Computer Programs Exercises Answer 第二章 构造数据抽象 练习2.17 ...

  10. CreateProcessAsUser 服务调用

    CreateProcessAsUser 函数 如果想通过服务向桌面用户Session 创建一个复杂UI 程序界面,则需要使用CreateProcessAsUser 函数为用户创建一个新进程用来运行相应 ...