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先生. ...
随机推荐
- Python3 pandas用法大全
Python3 pandas用法大全 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as ...
- JS的 instanceof 方法
http://www.cnblogs.com/jasonxuli/p/6769282.html 这是 2014-12-10 发在 iteye 上的文章 今天突然想起js的原型继承模型和相关的proto ...
- 详解KMP算法【转】
本文转载自:http://www.cnblogs.com/yjiyjige/p/3263858.html KMP算法应该是每一本<数据结构>书都会讲的,算是知名度最高的算法之一了,但很可惜 ...
- vue中实现中,自动补全功能
知识点:利用vue的基本语法实现,自动补全功能 参考博客:https://www.jb51.net/article/136282.htm 效果:在文本框中,输入相关名称,调用后台接口,将数据填充到下拉 ...
- 在MyEclise中使用自己安装的tomcat
·将Tomcat配置到MyEclipse中 1.在MyEclipse中打开Window子选项Preferences: 2.在Preferences面板中,点击左边选项中的MyEclipse,找到Ser ...
- @pathVariable的作用
//url中的id 可通过@pathVariable绑定到函数的参数中
- Nginx笔记02-nginx常用参数配置说明
nginx的主配置文件是nginx.conf,这里主要针对这个文件进行说明 1.主配置文件nginx.conf 2.nginx配置文件的结构 从上面的配置文件中我们可以总结出nginx配置文件的基 ...
- mysql "Your password has expired...."错误解决方案
mysql -u root -p 进入mysql命令界面,然后输入 set password = password("新密码"); 参考:http://blog.csdn.net/ ...
- L183 Chinese company unveils first satellite for free WiFi
A Chinese internet technology company unveiled the first satellite in a constellation plan to provid ...
- New Concept English Two 32 88
$课文86 失控 940. As the man tried to swing the speedboat round, the steering wheel came away in his ha ...