#include<iostream>
#include<cctype>
#include<vector>
#include<cstdio>
using namespace std; //
int get_num(string s)
{
int sum=;
for(int i=;i<s.length();i++)
{
int k=s[i]-'';
sum=sum*+k;
}
//cout<<sum<<endl;
return sum;
} int main()
{
string s="6a-5+1=2-2a";
cin>>s;
vector<string> s0;
//第一步,实现分离
char ch;
int loc=;
for(int i=;i<s.length();i++)
{
if(s[i]=='=')
{
s0.push_back(s.substr(loc,i-loc));
s0.push_back("=");
loc=i+;
}
else if(s[i]=='+'||s[i]=='-')
{
string tmp=s.substr(loc,i-loc);
s0.push_back(tmp);
loc=i;
}
}
s0.push_back(s.substr(loc,s.length()-loc));
//for(int i=0;i<s0.size();i++)
// cout<<s0[i]<<endl;
//分离后的计算
int x=,c=;
int f=;
for(int i=;i<s0.size();i++){
if(s0[i]=="=")
{
f=-;
continue;
}
int kt=s0[i].length();
if(isalpha(s0[i][kt-])){
ch=s0[i][kt-];
if(s0[i][]=='-')
x-=f*get_num(s0[i].substr(,kt-));
else if(s0[i][]=='+')
x+=f*get_num(s0[i].substr(,kt-));
else x+=f*get_num(s0[i].substr(,kt-));
}
else
{
if(s0[i][]=='-')
c+=f*get_num(s0[i].substr(,kt));
else if(s0[i][]=='+')
c-=f*get_num(s0[i].substr(,kt));
else c-=f*get_num(s0[i].substr(,kt));
}
}
//cout<<x<<endl;
//cout<<c<<endl;
printf("%c=%.3f",ch,c*1.0/x);
return ;
}

一道很简单的题目,但是花了超级多的时间。

http://codevs.cn/problem/1015/

情况很多要依次处理,我是先把他们拆开打散,然后做相应的处理。

主要用到了C++ STL 中的string数据结构类型

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

  1. 计算器的改良(NOIP2000)

    题目链接:计算器的改良 这道题,不是很难,但代码也短不到哪去. 我们这里决定采取边读入边计算的方法,因为题目没有明确说式子有多长. 我们需要计算什么? 我们需要知道等号两边未知数的系数和常数项即可. ...

  2. P1022 计算器的改良

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

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

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

  4. 洛谷P1022 计算器的改良

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

  5. 【00NOIP普及组】计算器的改良(信息学奥赛一本通 1910)(洛谷 1022)

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

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

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

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

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

  8. codevs 1015 计算器的改良 2000年NOIP全国联赛普及组

     时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题目描述 Description NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委 ...

  9. luogu1022计算器的改良[noip2000提高组Day1 T1]

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

随机推荐

  1. SSL/TLS协议概览

    SSL/TLS协议是什么 计算机网络的OSI七层模型和TCP/IP四层模型想必大家都知道.其中SSL/TLS是一种介与于传输层(比如TCP/IP)和应用层(比如HTTP)的协议.它通过"握手 ...

  2. cocos2d-js入门二 环境搭建二

    电脑升级到WIN10后,cocos  code IDE安装不成功. 于是搭建新的环境JetBrainsWebStorm+chrome+JetBrains IDE Support,其中JetBrains ...

  3. Linux删除重复行 排序和不排序的做法--转载

    本文部分翻译自这里,来自 Jadu Saikia 的博客,这个博客上有很多非常有用的小技巧,有空可以多看看. 通常如果我们想获取一个文件里不重复的行的时候,我们可以直接通过 sort -u 命令,先把 ...

  4. codeforces 11 B.Jumping Jack 想法题

    B. Jumping Jack Jack is working on his jumping skills recently. Currently he's located at point zero ...

  5. python 矩阵转置

    arrA=[[,,,],[,,,],[,,,],[,,,]] N= #声明4x4数组arr arrB=[[None] * N for row in range(N)] print('[原设置的矩阵内容 ...

  6. 流行得前端构建工具比较,以及gulp配置

    前端现在三足鼎立的构建工具(不算比较老的ant,yeoman),非fis,grunt,gulp莫属了. fis用起来最简单,我打算自己得项目中使用一下fis. 先说一下gulp安装吧. 第一步:安装n ...

  7. hive row_number等窗口分析函数

    一.排序&去重分析 row_number() over(partititon by col1 order by col2) as rn 结果:1,2,3,4 rank() over(parti ...

  8. org.springframework.transaction 包改成 spring-tx

    org.springframework.transaction 包改成 spring-tx org.springframework.transaction  3.2.2以后的版本,全改到 spring ...

  9. 101. Symmetric Tree -- 判断树结构是否对称

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  10. 高并发数据采集的架构应用(Redis的应用)

    问题的出发点:       最近公司为了发展需要,要扩大对用户的信息采集,每个用户的采集量估计约3W.如果用户量增加的话,将会大量照成采集量成3W倍的增长,但是又要满足日常业务需要,特别是报表数据必要 ...