该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#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语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...相关推荐

  1. 程序员修仙之路-数据结构之 CXO让我做一个计算器

    菜菜呀,个税最近改革了,我得重新计算你的工资呀,我需要个计算器,你开发一个吧 CEO,CTO,CFO于一身的CXO X总,咱不会买一个吗? 菜菜 那不得花钱吗,一块钱也是钱呀··这个计算器支持加减乘除 ...

  2. 做一个计算器_2019年初级会计考试考生能不能带计算器?现在统一回复!

    初级会计职称考试越来越近了,不少考生已经开始刷题,其中做计算题谁也逃不掉,而且分值比例也较高,有人就问我:初级考试能带计算器吗? 说到计算,大部分人觉得心算手算有点浪回复时间,而且19年初级会计考试采 ...

  3. python编程计算器_Python学习笔记:用Python开发一个计算器项目

    最近抽空看了下python的学习文档,发现开发工具以及资料支持对开发者相当的友好,相比之下,以前用TCL&Tk做的项目主要缺点有两个:1,开发难度大,调试手段只有靠print一种,而且语法错误 ...

  4. 用栈实现计算器c语言报告,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define UINT unsigned int struct LOGIC { UINT logic,site; } ...

  5. c语言用栈实现计算器加法运算,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define UINT unsigned int struct LOGIC { UINT logic,site; } ...

  6. c语言怎样计算栈的长度,请问,用c语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define UINT unsigned int struct LOGIC { UINT logic,site; } ...

  7. c语言switch做一个计算器,超级新手,用switch写了个计算器程序,求指导

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我也写过一个....看样子大家都喜欢用 switch()来写计算机 ....百度排版是渣渣!!!!! # include intmain(void){ d ...

  8. java计算器布局设计_用java设计一个计算器界面???

    展开全部 public class Cheshi extends JFrame { private Border border = BorderFactory.createEmptyBorder(5, ...

  9. 做一个计算器_如何设计一个JavaScript插件系统,编程思维比死磕API更重要

    WordPress有插件. jQuery有插件.Gatsby.Eleventy和Vue也是如此. 插件是库和框架的常见功能,并且有一个很好的理由:它们允许开发人员以安全,可扩展的方式添加功能.这使核心 ...

最新文章

  1. 我的存储解决方案理论
  2. 连通图的判断(并查集, DFS, BFS)
  3. 第一批 | Share·2015产品经理O2O论坛免费票发放啦!
  4. WebService入门讲解
  5. 微信开放平台,微信登陆第三方网站 提示redirect_uri 参数错误
  6. SAP UI5 初学者教程之十三 - 如何添加自定义 CSS 类试读版
  7. linux 版本的scipy,linux安装scipy
  8. 综述 | 深度学习弱目标检测定位
  9. oracle 08177,Java OracleDatabaseException: ORA-08177: 无法连续访问此事务处理问题解决
  10. 用phpcms如何将静态页面制作成企业网站(上)
  11. 数据结构习题之线性表
  12. ArcGIS 安装出现Mircrosoft .NET Framework 3.5 sp1问题的解决方案
  13. 必须安装三星系列android系统智能手机usb驱动程序,三星N9109W Android 5.0 (GALAXY Note 4 电信4G)usb驱动下载安装教程...
  14. word文档中打钩的8种方法【实用】
  15. UWB定位/RSSI定位 三边测量法trilateration C语言代码详解
  16. selenium模拟鼠标滑动
  17. 2.3、Segment Routing基础之IGP Segment 类型详解
  18. 微软控制云服务器软件,服务器远程控制用什么软件
  19. 试题 算法训练 翻转旋转变换
  20. 最全大数据学习资源整理

热门文章

  1. UVA10394 Twin Primes【孪生素数】
  2. POJ1214 UVA127 Accordian Patience【vector】
  3. 《程序设计技术》第一章例程
  4. HDU2503 a/b + c/d【水题】
  5. Python Tricks(十二)—— 有理数的加法
  6. 矩阵等式 matrix identity(numpy仿真)
  7. theano 编程细节
  8. 从随机数生成到随机采样的C++实现
  9. 创建数据库是列名无效咋办_linux中sqlite3数据库的移植和使用(入门篇)
  10. python练习题及答案-听说你python基础入门了?100个经典练习题送给你(附完整答案)...