用栈实现计算器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语言做一个计算器 包括+-*/()的运算 用栈 该怎么做...相关推荐
- c语言报告总结PPT,C语言程序总结.ppt
C语言程序总结.ppt 例2 求两数之和#include void main( ) /*求两数之和*/{ int a,b,sum; /*声明,定义变量为整型*/ /*以下3行为C语句 */ a=123 ...
- 程序员修仙之路-数据结构之 CXO让我做一个计算器
菜菜呀,个税最近改革了,我得重新计算你的工资呀,我需要个计算器,你开发一个吧 CEO,CTO,CFO于一身的CXO X总,咱不会买一个吗? 菜菜 那不得花钱吗,一块钱也是钱呀··这个计算器支持加减乘除 ...
- python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例
Python+tkinter使用80行代码实现一个计算器实例 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码, ...
- 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语言报告,华中科技大学c语言实验报告
华中科技大学c语言实验报告 课 程 实 验 报 告课程名称: C 语言程序设计 专业班级: CS1409 学 号: U201414813 姓 名: 唐礼威 指导教师: 吴海 报告日期: 2015 年 ...
- c语言switch做一个计算器,超级新手,用switch写了个计算器程序,求指导
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我也写过一个....看样子大家都喜欢用 switch()来写计算机 ....百度排版是渣渣!!!!! # include intmain(void){ d ...
- c语言报告西电,c语言课程设计报告西安电子科技大学.docx
C语言课程设计 题目名称: 7组 姓 名 学 号 130403100 专 业 自动化专业 班 级 1304031 指导教师 冯兰胜 编写日期 2016.5.16 需求分析 4.19 递归反向输出字符串 ...
最新文章
- 转载,关于缓存穿透、缓存并发、缓存雪崩那些事
- Jakarta EE 8状态
- 建设IPTV电视系统是否有必要?
- 60、二叉搜索树的第k个结点
- Android官方开发文档Training系列课程中文版:分享简单数据之从其它APP接收简单数据
- 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...
- 三菱plc字高八位和低八位_Switch好搭档,八位堂手柄上手体验
- c语言中递增递减运算符,递增++和递减-C ++中的运算符
- dojo + jersey 上传图片到数据库
- office2019 使用
- 初学SQL Server 2016
- EasyOcr报错 --- [WinError 10054] An existing connection was forcibly closed by the remote host
- word中“项目符号”和后面的文字间隔太远
- 苹果手机锁屏后无线重新连接服务器,iphone11锁屏自动断开wifi怎么办 苹果11手机热点自动断开解决方法...
- glove.840B.300d glove词向量词嵌入文件国内服务器下载 出现麻烦阻塞的点时,就要思考google有没有更快捷的方法
- 关于本人的网络地址请移步简书
- SQL 中INSERT INTO 的使用方法
- POJ 1287-Networking
- Metasploit简单应用
- 《初.中级网管要掌握的技术》我的技术我做主