P1022 计算器的改良 STL 中string stream的应用

本文介绍了如何使用C++中的stringstream解决洛谷P1022计算器题目的改良问题。通过分析一元一次方程的实例,阐述了如何处理方程中的整数、小写字母和运算符,并利用stringstream进行字符串的分割和数值转换,以求得方程的解。示例中强调了stringstream在字符串和整数转换中的应用。
摘要由CSDN通过智能技术生成

洛谷 / 题目列表 / 题目详情
P1022 计算器的改良

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

题目描述
为了很好的完成这个任务,ZLZL先生首先研究了一些一元一次方程的实例:

4+3x=84+3x=8

6a-5+1=2-2a6a−5+1=2−2a

-5+12y=0−5+12y=0

ZLZL先生被主管告之,在计算器上键入的一个一元一次方程中,只包含整数、小写字母及+、-、=这三个数学符号(当然,符号“-”既可作减号,也可作负号)。方程中并没有括号,也没有除号,方程中的字母表示未知数。

你可假设对键入的方程的正确性的判断是由另一个程序员在做,或者说可认为键入的一元一次方程均为合法的,且有唯一实数解。

输入格式
一个一元一次方程。

输出格式
解方程的结果(精确至小数点后三位)。

stringstream:
stringstream是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的iostream、fstream有类似的操作方式。要使用stringstream, 必须先加入这一行:

#include
stringstream主要是用在將一个字符串分割,可以先用.clear( )以及.str( )將指定字串设定成一开始的內容,再用>>把个別的资料输出。
stringstream也可以用作字符串和整数相互转换。

思路:强行模拟,把两个±号之间的字符看成一个数(注意用数组记录每个加减号的位置),判断是系数还是常数,然后分别计算总和。

#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<sstream>
#include<cctype>
using namespace std;
int ant[11];
int rnt[11];


int main()
{
   
	int k=0;//等号左边加减号个数
	int k2=0;//等号右边加减号个数
	char c;//记录未知数
	string s; 记录方程
	float num=0,xishu=0; //系数和常数和
	int begin=0,stop=0; //每次判断中加减号的位置;
	cin >>s;
	string	s2="+0+0+0";  //玄学加长方程避免某些玄学bug
	s+=s2; //加长
	int step; // sstream的整数值 
	int mid=s.find('='); //找到中间位置   
	//定义好了,让我们开始,嘤嘤嘤。
	
	//等号左边 
	for(int i=1;i<=mid;i++) // 例如-17x+3=0,第一个加减号不计;
	{
   
		if(s[i]=='+'||s[i]=='-')
		{
   
			ant[k]=i;   // 找到加减号的位置
			k
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值