传送

这个题让你通过自己的努力,来写一个可以解一元一次方程的计算题(麻麻再也不用担心我计算错了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. .aspx和.aspx.cs之间的区别

    在vs里面创建一个web窗体会产生两种文件:后缀是.aspx和.aspx.cs. 简单的来说,.aspx是表现层,可以简单理解为是写html代码的,界面的设计部分:.cs是对应的逻辑代码,再通过特定的 ...

  2. c# asp.net uploadify 上传大文件 出现的 HTTP 404 问题

    用uploadify在IIS6下上传大文件没有问题,但是迁移到IIS7下面,上传大文件时,出现HTTP 404错误. 查了半天,原来是IIS7下的默认设置限制了上传大小.这个时候Web.Config中 ...

  3. Smashing Nodejs 读书笔记(二)

    了不起的Node.js:将JavaScript进行到底 书名:SMASHING Node.js : JavaScript Everywhere 原作者:(美)劳奇 Rauch.G 译者:赵静 出版日期 ...

  4. Java学习day8面向对象编程2-类的属性和方法

    一.类的属性 1.语法格式 修饰符 类型 属性名 = 初值 说明:修饰符private:该属性只能由该类的方法使用.在同一类内可见.使用对象:变量.方法. 注意:不能修饰类(外部类)    修饰符pu ...

  5. C# 中File和FileStream的用法

    原文:https://blog.csdn.net/qq_41209575/article/details/89178020 1.首先先介绍File类和FileStream文件流 1.1  File类, ...

  6. SQL中的like '%%‘查询

    一,我们正常使用like时,这是有两个条件的模糊查询 select *From Test where UserName like '%m%' and UserName like '%a%' 二,但这时 ...

  7. [转]Oracle 11g 基于CentOS7静默安装教程(无图形界面,远程安装) --有部份地方有问题

    Oracle 11g 基于CentOS7静默安装教程(无图形界面,远程安装) [转载]原文地址:http://canonind.blog.51cto.com/8239025/1883066 一.安装前 ...

  8. 认知redis

    一.redis是什么? 1.基于key-value的内存No sql 数据库(非关系型数据库) 2.读写性能非常好 二.redisd的数据类型有哪些?特点分别是什么? 1)string 一个键对一个值 ...

  9. C# 异常处理最佳实践,解决代码分析提示CA1031:不要捕捉一般异常类型的解决办法

    异常类型 异常一般分为系统异常 和 应用异常.系统异常有无法连接数据库,而应用异常是业务逻辑异常,比如授权失败. 在 C# 中异常基于 System.Exception,派生出 System.Syst ...

  10. linux--基础知识1

    #进入终端窗口,root命令提示符#,普通用户登陆提示符$,切换终端用户 ctrl+shift+F2,退出终端命令exit #init 0 关机  reboot 重启  ls查看当前目录下文件  ls ...