codevs 计算器的改良
#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 计算器的改良的更多相关文章
- 计算器的改良(NOIP2000)
题目链接:计算器的改良 这道题,不是很难,但代码也短不到哪去. 我们这里决定采取边读入边计算的方法,因为题目没有明确说式子有多长. 我们需要计算什么? 我们需要知道等号两边未知数的系数和常数项即可. ...
- P1022 计算器的改良
P1022 计算器的改良 题目背景 NCL 是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给 ...
- 洛谷—— P1022 计算器的改良
P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...
- 洛谷P1022 计算器的改良
P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...
- 【00NOIP普及组】计算器的改良(信息学奥赛一本通 1910)(洛谷 1022)
[题目描述] NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了一个刚进入的新手ZL先 ...
- P1010 幂次方 P1022 计算器的改良
P1010 幂次方 一.题目 https://www.luogu.org/problemnew/show/P1010 二.代码 #include<bits/stdc++.h> using ...
- 2021.07.26 P1022 计算器的改良(字符串)
2021.07.26 P1022 计算器的改良(字符串) 改进: 如果是我出题,我一定把未知数设为ab.buh.bluesky之类的长度不只是1的字符串! 题意: 一个一元一次方程,求解. 分析: 1 ...
- codevs 1015 计算器的改良 2000年NOIP全国联赛普及组
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委 ...
- luogu1022计算器的改良[noip2000提高组Day1 T1]
题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了一个刚进入的新手ZL先生. ...
随机推荐
- bzoj3629 / P4397 [JLOI2014]聪明的燕姿
P4397 [JLOI2014]聪明的燕姿 根据唯一分解定理 $n=q_{1}^{p_{1}}*q_{2}^{p_{2}}*q_{3}^{p_{3}}*......*q_{m}^{p_{m}}$ 而$ ...
- 如何在编辑框中使用IAutoComplete接口(转载)
出自:http://www.vckbase.com/index.php/wv/27.html 如果可能我想用打包类来实现.唉!,就叫我封装先生吧. 你算是找对地方了.但是我要先声明我的解决办法不是你所 ...
- Ubuntu16.04下配置pip国内镜像源加速安装【转】
本文转载自:https://blog.csdn.net/yucicheung/article/details/79095742 问题描述 基于国内网速的问题,我们直接pip安装包通常速度非常慢,而且经 ...
- git如何在自动生成补丁时指定补丁名的起始编号
答:使用选项--start-number,用法如下: git format-patch 1f43be --start-number=2 这样就可以生成起始编号为2的补丁名,类似0002-me.patc ...
- NOIP 2018退役祭
Day 0 实在是没啥特别想干的...路上看了一下FE的小玉的第四周目的视频...然后到了之后整理了一下东西,然后被slr教着学了一下一个叫翻棋的东西,然后立刻就上瘾了...然后就听slr先生教我滑铁 ...
- [Opencv]图像的梯度与边缘检测(转)
文章来源:https://blog.csdn.net/on2way/article/details/46851451 梯度简单来说就是求导,在图像上表现出来的就是提取图像的边缘(不管是横向的.纵向的. ...
- Tensorflow1.5.0+cuda9.0+cudnn7.0+gtx1080+ubuntu16.04
目录 Tensorflow1.5.0+cuda9.0+cudnn7.0+gtx1080+ubuntu16.04 0. 前记 1. 环境说明 2. 安装GTX1080显卡驱动 3. CUDA 9.0安装 ...
- ubuntu 14.04 (desktop amd 64) 查看配置参数
硬盘型号 sudo hdparm -i /dev/sda |grep "Model" 硬盘数量大小 sudo fdisk -l |grep "Disk /dev/sd ...
- python 列表元素的筛选
color = ['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow'] color = [x ,,)] print(color)
- 快捷方式控制台调试each这种方法的时候怎么停
1.ctrl +' 2.当遇到angular.each的时候ctrl + ; 3.进入之后,还是先ctrl+'; angular中: 当遇到forEach之后,又一次ctrl+;就回到你的each之后 ...