栈的应用c语言计算器思路,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#define UINT unsigned int
struct LOGIC
{
UINT logic,site;
};
char *text="+8*9*(8+7)+12/6-4";
int calc_exp(char *sz);
int calc_part(int a,int b,UINT w);
int main(int argc,char *argv[])
{
std::cout<
std::cin.get();
return 0;
}
int calc_exp(char *sz)
{
int calc_rt=0;
UINT szcnt=0;
LOGIC *logic;
UINT *expval;
UINT lcnt=0;
UINT ecnt=0;
bool bj=false;
UINT ti=0;
int tn=0;
int tr=0;
char *tch=0;
szcnt=sizeof(sz);
bj=false;
for(UINT i=0;i
{
switch(sz[i])
{
case '+':
case '-':
case '*':
case '/':
case '(':
case ')':
bj=false;
lcnt++;
break;
default:
if(bj==false)
{
ecnt++;
bj=true;
}
break;
}
}
if(lcnt!=0)logic=new LOGIC[lcnt];
if(ecnt!=0)expval=new UINT[ecnt];
else return 0;
bj=false;
ti=0;
tn=0;
for(UINT i=0;i
{
switch(sz[i])
{
case '+':
case '-':
case '*':
case '/':
case '(':
case ')':
switch(sz[i])
{
case '+':
logic[ti].logic=0;
break;
case '-':
logic[ti].logic=1;
break;
case '*':
logic[ti].logic=2;
break;
case '/':
logic[ti].logic=3;
break;
case '(':
logic[ti].logic=4;
break;
case ')':
logic[ti].logic=5;
break;
}
bj=false;
ti++;
break;
default:
if(bj==false)
{
if(tch!=0)
{
delete[] tch;
tch=0;
}
tch=new char[logic[ti].site-i];
for(UINT j=i;j
{
tch[j-i]=sz[j];
}
expval[tn]=atoi(tch);
tn++;
bj=true;
}
break;
}
}
if(tch!=0)
{
delete[] tch;
tch=0;
}
if(lcnt==0)return expval[0];
ti=0;
tn=-1;
while(ti
{
switch(logic[ti].logic)
{
case 0:
case 1:
if(tn!=-1)
{
calc_part(calc_rt,tr,logic[tn].logic);
tn=-1;
}
else
{
tn=ti;
tr=expval[ti];
}
break;
break;
case 2:
tr*=expval[ti];
break;
case 3:
tr/=expval[ti];
break;
case 4:
for(UINT j=ti;j
{
if(logic[j].logic==5)
{
tch=new char[logic[j].site-logic[ti].site-1];
for(UINT k=0;k
{
tch[k]=sz[logic[ti].site+1+k];
}
calc_part(tr,calc_exp(tch),logic[ti-1].logic);
ti=j;
break;
}
}
break;
}
ti++;
}
return calc_rt;
}
int calc_part(int a,int b,UINT w)
{
switch(w)
{
case 0:
return (a+b);
break;
case 1:
return (a-b);
break;
case 2:
return (a*b);
break;
case 3:
return (a/b);
break;
}
}
还没测试过,做个构思吧,我百度了一下,你去这个地方看,那里跟你想要的更合适:
http://wenku.baidu.com/view/b841d90003d8ce2f006623cf.html
栈的应用c语言计算器思路,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...相关推荐
- 程序员修仙之路-数据结构之 CXO让我做一个计算器
菜菜呀,个税最近改革了,我得重新计算你的工资呀,我需要个计算器,你开发一个吧 CEO,CTO,CFO于一身的CXO X总,咱不会买一个吗? 菜菜 那不得花钱吗,一块钱也是钱呀··这个计算器支持加减乘除 ...
- 做一个计算器_2019年初级会计考试考生能不能带计算器?现在统一回复!
初级会计职称考试越来越近了,不少考生已经开始刷题,其中做计算题谁也逃不掉,而且分值比例也较高,有人就问我:初级考试能带计算器吗? 说到计算,大部分人觉得心算手算有点浪回复时间,而且19年初级会计考试采 ...
- python编程计算器_Python学习笔记:用Python开发一个计算器项目
最近抽空看了下python的学习文档,发现开发工具以及资料支持对开发者相当的友好,相比之下,以前用TCL&Tk做的项目主要缺点有两个:1,开发难度大,调试手段只有靠print一种,而且语法错误 ...
- 用栈实现计算器c语言报告,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define UINT unsigned int struct LOGIC { UINT logic,site; } ...
- c语言用栈实现计算器加法运算,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define UINT unsigned int struct LOGIC { UINT logic,site; } ...
- c语言怎样计算栈的长度,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define UINT unsigned int struct LOGIC { UINT logic,site; } ...
- c语言switch做一个计算器,超级新手,用switch写了个计算器程序,求指导
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我也写过一个....看样子大家都喜欢用 switch()来写计算机 ....百度排版是渣渣!!!!! # include intmain(void){ d ...
- java计算器布局设计_用java设计一个计算器界面???
展开全部 public class Cheshi extends JFrame { private Border border = BorderFactory.createEmptyBorder(5, ...
- 做一个计算器_如何设计一个JavaScript插件系统,编程思维比死磕API更重要
WordPress有插件. jQuery有插件.Gatsby.Eleventy和Vue也是如此. 插件是库和框架的常见功能,并且有一个很好的理由:它们允许开发人员以安全,可扩展的方式添加功能.这使核心 ...
最新文章
- 我的存储解决方案理论
- 连通图的判断(并查集, DFS, BFS)
- 第一批 | Share·2015产品经理O2O论坛免费票发放啦!
- WebService入门讲解
- 微信开放平台,微信登陆第三方网站 提示redirect_uri 参数错误
- SAP UI5 初学者教程之十三 - 如何添加自定义 CSS 类试读版
- linux 版本的scipy,linux安装scipy
- 综述 | 深度学习弱目标检测定位
- oracle 08177,Java OracleDatabaseException: ORA-08177: 无法连续访问此事务处理问题解决
- 用phpcms如何将静态页面制作成企业网站(上)
- 数据结构习题之线性表
- ArcGIS 安装出现Mircrosoft .NET Framework 3.5 sp1问题的解决方案
- 必须安装三星系列android系统智能手机usb驱动程序,三星N9109W Android 5.0 (GALAXY Note 4 电信4G)usb驱动下载安装教程...
- word文档中打钩的8种方法【实用】
- UWB定位/RSSI定位 三边测量法trilateration C语言代码详解
- selenium模拟鼠标滑动
- 2.3、Segment Routing基础之IGP Segment 类型详解
- 微软控制云服务器软件,服务器远程控制用什么软件
- 试题 算法训练 翻转旋转变换
- 最全大数据学习资源整理
热门文章
- UVA10394 Twin Primes【孪生素数】
- POJ1214 UVA127 Accordian Patience【vector】
- 《程序设计技术》第一章例程
- HDU2503 a/b + c/d【水题】
- Python Tricks(十二)—— 有理数的加法
- 矩阵等式 matrix identity(numpy仿真)
- theano 编程细节
- 从随机数生成到随机采样的C++实现
- 创建数据库是列名无效咋办_linux中sqlite3数据库的移植和使用(入门篇)
- python练习题及答案-听说你python基础入门了?100个经典练习题送给你(附完整答案)...