C++ Primer第五版习题9.52

该博客主要介绍了如何解决C++ Primer第五版中的习题9.52。博主选择了使用char类型栈来处理表达式,通过判断字符是否为运算符或括号,并在遇到右括号时弹出子串进行计算。博主提到了使用递归方式实现计算字符串表达式的方法,并寻求其他可能的解题思路。
摘要由CSDN通过智能技术生成

没有想到用什么类型的栈更好操作,直接用了char类型的。

思路是从缓冲区得到char之后,判断是否属于“0123456789.+-*/(”,是的话压入栈内,直到遇到")",弹出左括号之后的char组成字符串,然后专门设置一个计算string表达式的函数。

计算string表达式的函数cacl,考虑用递归做,考虑a+b+c形式,返回a+cacl(b+c),直到遇见仅有一个标点时,返回计算结果。

大佬没有没有其他思路的

#include <iostream>
#include <stack>
#include <string>
#include <vector>
using namespace std;

string caclStr(const string&);
void printStack(const stack<char>&);
float calcDou(const float, const float, const char&);
string delLastZero(const string& s)
{
	string stmp(s);
	for (auto b = stmp.rbegin(); b != stmp.rend() && *b == '0'; b = stmp.rbegin())
		stmp.pop_back();
	if (stmp.back())
		stmp.pop_back();
	return stmp;
}
string reOderStr(const string&s)
{
	string str(s.size(), ' ');
	auto bstr=str.rbegin();
	for (auto b = s.be
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值