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

#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. c语言报告总结PPT,C语言程序总结.ppt

    C语言程序总结.ppt 例2 求两数之和#include void main( ) /*求两数之和*/{ int a,b,sum; /*声明,定义变量为整型*/ /*以下3行为C语句 */ a=123 ...

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

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

  3. python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例

    Python+tkinter使用80行代码实现一个计算器实例 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码, ...

  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语言报告,华中科技大学c语言实验报告

    华中科技大学c语言实验报告 课 程 实 验 报 告课程名称: C 语言程序设计 专业班级: CS1409 学 号: U201414813 姓 名: 唐礼威 指导教师: 吴海 报告日期: 2015 年 ...

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

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

  9. c语言报告西电,c语言课程设计报告西安电子科技大学.docx

    C语言课程设计 题目名称: 7组 姓 名 学 号 130403100 专 业 自动化专业 班 级 1304031 指导教师 冯兰胜 编写日期 2016.5.16 需求分析 4.19 递归反向输出字符串 ...

最新文章

  1. 转载,关于缓存穿透、缓存并发、缓存雪崩那些事
  2. Jakarta EE 8状态
  3. 建设IPTV电视系统是否有必要?
  4. 60、二叉搜索树的第k个结点
  5. Android官方开发文档Training系列课程中文版:分享简单数据之从其它APP接收简单数据
  6. 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...
  7. 三菱plc字高八位和低八位_Switch好搭档,八位堂手柄上手体验
  8. c语言中递增递减运算符,递增++和递减-C ++中的运算符
  9. dojo + jersey 上传图片到数据库
  10. office2019 使用
  11. 初学SQL Server 2016
  12. EasyOcr报错 --- [WinError 10054] An existing connection was forcibly closed by the remote host
  13. word中“项目符号”和后面的文字间隔太远
  14. 苹果手机锁屏后无线重新连接服务器,iphone11锁屏自动断开wifi怎么办 苹果11手机热点自动断开解决方法...
  15. glove.840B.300d glove词向量词嵌入文件国内服务器下载 出现麻烦阻塞的点时,就要思考google有没有更快捷的方法
  16. 关于本人的网络地址请移步简书
  17. SQL 中INSERT INTO 的使用方法
  18. POJ 1287-Networking
  19. Metasploit简单应用
  20. 《初.中级网管要掌握的技术》我的技术我做主

热门文章

  1. 90后ACE成长记——从偏居一隅小城里走出的核心技术人
  2. 到底什么成就了今天的人工智能?(下)
  3. 基于深度学习模型WideDeep的推荐
  4. 在阿里云上试用 Knative
  5. 机器学习从业人员到底做什么?
  6. 提升普适性,阿里云官方SDK发布支持Go语言SDK
  7. 【光说不练假把式】今天说一说Kubernetes 在有赞的实践
  8. Cloud一分钟 | 阿里云将在英国大区设立数据中心
  9. linux 开机启动设置密码,Linux下Redis设置密码及开机自启动
  10. 解决jodconverter 2.2.1 版本不支持docx、xlsx、pptx 转换成PDF格式异常