- 浏览: 146755 次
- 性别:
- 来自: 帝都
文章分类
最新评论
-
jackchen0227:
汗,谢谢啊
joj 1817: Triangle 三角形的判定 -
RootJ:
输出时候没有写:号。。。
joj 1817: Triangle 三角形的判定 -
jackchen0227:
嗯再捡捡。。
不带括号的四则运算 -
ruby_windy:
不是大二实验课写的么...
不带括号的四则运算
/* 不带括号的表达式的四则运算 使用两个堆栈,一个op(存放加号与减号) 一个exp(存放操作数) 乘除法直接计算,加减法先压入堆栈 */ #include <string> #include <iostream> #include <stack> #include <cctype> #define maxInt 65535 using namespace std; stack<char> op; //存放操作符 stack<int> exp;//存放操作数 int add(int num1,int num2) { return num1 + num2; } int minus(int num1,int num2) { return num1 - num2; } int mutiple(int num1,int num2) { return num1 * num2; } int devide(int num1,int num2) { return num1 / num2; } /* 将字符转化成数字,并且修正当前的索引cur */ bool convertToNumber(int &cur,int &num,char * str) { num = 0; if(strlen(str) <= 0) return false; if(!isdigit(str[cur])) return false; while(isdigit(str[cur])) { num = num * 10 + str[cur] - '0'; if(num > maxInt)//溢出 return false; cur ++; } return true; } bool calc(char * str,int & res) { int strLen = strlen(str) ; if(strLen<= 0) return false; int cur = 0; if(!isdigit(str[cur])) { cout << "error char"<<endl; return false; } while(cur < strLen) { if(isdigit(str[cur]))//转化数字,压入exp栈中 { int num = 0; if(!convertToNumber(cur,num,str)) { cout <<"error" << endl; return false; } exp.push(num); continue; } else { switch(str[cur]) { case '+' : //如果是加号和减号则压入op case '-' : { op.push(str[cur]); cur ++; break; } case '/'://如果是乘法与和除法,弹exp栈,取一个数字计算结果,并将结果压入exp { int num; cur ++ ; if(convertToNumber(cur,num,str)) { int res = devide(exp.top(),num); exp.pop(); exp.push(res); break; } else { cout << "error" <<endl; return false; } } case '*': { int num; cur ++; if(convertToNumber(cur,num,str)) { int res = mutiple(exp.top(),num); exp.pop(); exp.push(res); break; } else { cout << "error" <<endl; return false; } } default: { cout << "error char" <<endl; } } } } while(!op.empty()) { if(exp.empty()) { cout << "error " <<endl; return false; } if(op.top() == '+') { int n1 = exp.top(); exp.pop(); int n2 = exp.top(); exp.pop(); exp.push(add(n1,n2)); } else if(op.top() == '-') { int n1 = exp.top(); exp.pop(); int n2 = exp.top(); exp.pop(); exp.push(minus(n1,n2)); } else { cout << "error char "<< endl; return false; } op.pop(); } if(exp.size() == 1) { res = exp.top(); exp.pop(); return true; } else return false; } int main() { char str[500]; freopen("in.txt","r",stdin); int result = 0; cin>>str; calc(str,result); cout << result <<endl; fclose(stdin); return 0; }
异常情况处理好麻烦啊。。。
发表评论
-
-在二元树中找出和为某一值的所有路径--捡捡递归的使用
2012-03-30 21:05 930/* 算法要求:打印从root到叶节点的路径上的权值和 为 ... -
二叉树的创建与四种遍历之递归版本
2011-08-21 21:59 1104#include <stdio.h> #i ... -
【zz】C++的内存管理
2011-08-17 10:35 1202来自http://blog.csdn.net/bizhu12/ ... -
floyd算法
2011-08-04 20:13 847/* 证明next[i][j] = k;是错误的例子 No ... -
[zz] Bloom filter
2011-06-29 15:48 1147Bloom Filter概念和原理 焦 ... -
【zz】并查集
2011-06-29 15:32 1402http://blog.sina.com.cn/s/blo ... -
[zz]catalan数的分析与应用
2011-06-25 22:09 1374性质 令h(0)=1,h( ... -
joj 1085: I Think I Need a Houseboat 半圆形侵蚀
2011-06-24 20:54 9771085: I Think I Need a Ho ... -
joj 1032 deck 重心的计算
2011-06-24 19:12 11301032: Deck Result TIME ... -
joj 1186 Box of Bricks 水题
2011-06-19 09:46 9581186: Box of Bricks Re ... -
***joj 1026 the staircase 利用递归、动态规划和一道类似题目
2011-06-18 19:27 1302转自网易何国涛的博客http://zhedahht.bl ... -
joj 1062 Computer Versus Mankind 非递归最大公约数 最小公倍数
2011-06-18 15:15 12431062: Computer Versus Mankin ... -
基本的排序:非递归的堆排序
2011-06-17 15:38 0void restore(int root,int le ... -
joj 1817: Triangle 三角形的判定
2011-06-15 20:34 13391817: Triangle Result ... -
×joj 1175 The Binomial Function 递归,递归优化,非递归
2011-06-15 19:32 8701175: The Binomial Functio ... -
joj 1146 标准输入+字符串反转
2011-06-15 18:02 11681146: Word Reversal Re ... -
joj 1149Binary Number 二进制移位操作
2011-06-15 09:50 9621149: Binary Numbers R ... -
joj 2484
2011-06-14 13:35 8542484: Chinese Character A ... -
**joj:1017 fire net 递归回溯的使用
2011-06-14 12:35 11131017: Fire Net Res ... -
joj 1014 the matrix 从八个方向遍历访问矩阵
2011-06-10 20:51 12091014: The Matrix Re ...
相关推荐
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于java的驾校收支管理可视化平台的开题报告
时间序列 原木 间隔5秒钟 20241120
毕业设计&课设_基于 Vue 的电影在线预订与管理系统:后台 Java(SSM)代码,为毕业设计项目.zip
基于springboot课件通中小学教学课件共享平台源码数据库文档.zip
基于java的网上购物商城的开题报告
Delphi人脸检测与识别Demo1fdef-main.zip
基于java的咖啡在线销售系统的开题报告
基于java的自助医疗服务系统的开题报告.docx
内容概要:本文档全面介绍了Visual Basic(VB)编程语言的基础知识和高级应用。首先概述了VB的基本特性和开发环境,随后详细讲述了VB的数据类型、变量、运算符、控制结构、数组、过程与函数、变量作用域等内容。接着介绍了窗体设计、控件使用、菜单与工具栏的设计,文件操作、数据库访问等关键知识点。最后讨论了VB的学习方法、发展历史及其在桌面应用、Web应用、数据库应用、游戏开发和自动化脚本编写等领域的广泛应用前景。 适合人群:初学者和中级程序员,尤其是希望快速掌握Windows桌面应用开发的人群。 使用场景及目标:①掌握VB的基础语法和开发环境;②学会使用VB创建复杂的用户界面和功能完整的应用程序;③理解数据库操作、文件管理和网络编程等高级主题。 其他说明:Visual Basic是一种简单易学且功能强大的编程语言,尤其适合用于开发Windows桌面应用。文中不仅覆盖了基础知识,还包括了大量的实用案例和技术细节,帮助读者快速提升编程技能。
基于java的疫情期间高校防控系统开题报告.docx
基于springboot+vue社区老年人帮扶系统源码数据库文档.zip
基于java的超市商品管理系统的开题报告.docx
基于SpringBoot房屋买卖平台源码数据库文档.zip
xdu限通院23微处理器系统与应用大作业(两只老虎),适应于汇编语言keil软件,
<项目介绍> - 新闻类网站系统,基于SSM(Spring、Spring MVC、MyBatis)+MySQL开发,高分成品毕业设计,附带往届论文 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
基于java的学生网上请假系统的开题报告.docx
社会经济繁荣发展的今天,电子商务得到了飞速发展,网上交易越来越彰显出其独特的优越性,在人们的日常生活中,出现了各种类型的交易网站。其中一个就是车辆易主交易网站,它是一个服务于用户买卖二手车辆的交易网站,为用户提供了平等互利、方便快捷的网上交易平台,通过这一类型的网站,用户可自由出售和购买车辆。 本课题主要根据车辆本身的特性,充分发挥互联网的特点与优势,构建一个以二手车辆为商品、基于互联网平台的车辆易主业务交易管理系统,并根据车辆易主业务交易管理系统的应用需求,进行需求分析,进而对网站系统作规划设计。采用IDEA为运行平台,以SSH为框架,运用HTML语言、JSP技术、MySql数据库、JSP与后台数据库链接等关键技术建设二手车网上交易系统,构建车辆易主交易系统的会员注册与登录,网站首页展示、用户发布商品车辆,用户求购商品车辆,分页浏览、购物系统、用户后台管理、管理员用户后台管理等功能,并使这些功能得以实现并更好为用户服务。网站整体构建完成且测试成功后,用户可以进入网站进行注册、登录,登录后,用户可以在网站上发布自己的闲置车辆或者寻找想要购买的车辆,还可以收藏车辆,管理发布和收藏的车辆,
SQLite3的向量扩展库,windows dll,版本0.1.5
基于C++实现(控制台)商品库存管理系统