| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1510 人关注过本帖
标题:自己弄的算术表达式的程序……
只看楼主 加入收藏
xiao_pig
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-4-20
收藏
 问题点数:0 回复次数:10 
自己弄的算术表达式的程序……
m3oT6mwV.rar (45.6 KB) 自己弄的算术表达式的程序……


搜索更多相关主题的帖子: 算术 表达 
2006-04-27 18:33
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
如果能显示入栈出栈的过程那就好了

我的征途是星辰大海
2006-04-27 19:22
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


你的程序有BUG。。。。0是不能做为除数的。。。。。你没把源代码贴出来。。我认为不太好吧。好的代码是大家修改出来的。。。。希望能分享你的成果。

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2006-04-29 14:20
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
楼主的原代码

#include<process.h>
#include<string.h>
#define MAX_SIZE 100

template<class T>class Stack
{
T data[MAX_SIZE];
int top;

public:

Stack(void);
~Stack(void);
bool empty(void);
void push(T a);
T pop(void);
T GetTop(void);
};

template <class T>Stack<T>::Stack(void)//构造函数
{
top=-1;
}

template <class T>Stack<T>::~Stack(void)//析构函数
{
}

template <class T>bool Stack<T>::empty(void)//判断栈空操作
{
return top==-1?true :false;
}
template <class T>void Stack<T>::push(T a)//入栈操作
{
if(top==MAX_SIZE)
{
cout<<"Stack is full!"<<endl;
return;
}

data[++top]=a;
}

template <class T>T Stack<T>::pop(void)//出栈操作
{
if(top==-1)
{
cout<<"Stack is underflow!"<<endl;
return 0;
}
return data[top--];
}
template <class T>T Stack<T>::GetTop(void)//取栈头元素操作
{
if(top!=-1)
return data[top];
else return false;
}
//计算表达式求值过程演示


#include<iostream.h>
#include<stdio.h>
#include<math.h>
#include"tstack.h"

float Operate(float a,char theta,float b)
{
float s;
switch(theta)
{
case'+': s=a+b;break;
case'-': s=a-b;break;
case'*': s=a*b;break;
case'/': s=a/b;break;
}
return s;
}


char Precede(char a,char b)
{
char array[7][7]={'>','>','<','<','<','>','>','>','>','<','<','<','>','>','>','>','>','>','<','>','>','>','>','>','>','<','>','>','<','<','<','<','<','=','0','>','>','>','>','0','>','>','<','<','<','<','<','0','='};

int i,j;

switch(a)
{
case'+': i=0;break;
case'-': i=1;break;
case'*': i=2;break;
case'/': i=3;break;
case'(': i=4;break;
case')': i=5;break;
case'#': i=6;break;
}

switch(b)
{
case'+': j=0;break;
case'-': j=1;break;
case'*': j=2;break;
case'/': j=3;break;
case'(': j=4;break;
case')': j=5;break;
case'#': j=6;break;
}

return(array[i][j]);
}

void main()
{
char array[100],x,theta;
char *p,*q,A='y';
float s;
int i;
float v=0.0,a=0.0,b=0.0;
cout<<'\t'<<'\t'<<"****************************************"<<endl;
cout<<'\t'<<'\t'<<" 算术表达式求值 "<<endl;
cout<<'\t'<<'\t'<<"****************************************"<<endl;
cout<<'\t'<<'\t'<<" ------------中国科技大学-------------- "<<endl;
cout<<'\t'<<'\t'<<"|作者: 老大的小猪 |"<<endl;
cout<<'\t'<<'\t'<<"|______________________________________|"<<endl;

while(A=='y')
{
cout<<"请输入表达式(以#号键结束):"<<endl;
p=array;
cin>>array;

Stack<char>OPTR;
Stack<float>OPND;

OPTR.push('#');

while((*p)!='#'||OPTR.GetTop()!='#')
{
if((*p)>='0'&&(*p)<='9')
{
v=0.0;
q=p;
i=-1;
while((*q)>='0'&&(*q)<='9'&&(*q)!='.')
{
i++;
q++;
}


for(;i>=0;i--)
{
s=pow(10,i);
v+=((*p)-'0')*s;
p++;
}

if((*p)=='.')
{
p++;
while((*p)>='0'&&(*p)<='9')
{
s=pow(10,i);
v+=((*p)-'0')*s;
i--;
p++;
}
}
OPND.push(v);
}
else
switch(Precede(OPTR.GetTop(),(*p)))
{
case '<':OPTR.push((*p));
p++;break;
case '=':x=OPTR.pop();
p++;break;
case '>':theta=OPTR.pop();
b=OPND.pop();
a=OPND.pop();
OPND.push(Operate(a,theta,b));
break;
}
}
printf("%f\n",OPND.GetTop());
cout<<"想继续吗(y/n)?";
cin>>A;
}


}


我的征途是星辰大海
2006-04-29 16:47
xiao_pig
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-4-20
收藏
得分:0 
恩,是有想过把出入栈的过程演示出来,呵呵,可惜最近太忙,这个主要是为了完成作业才弄的,所以^_^..........
2006-05-05 18:48
xiao_pig
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-4-20
收藏
得分:0 
有力学考试,毕竟是自己的专业,要多花时间的,呵呵
2006-05-05 18:50
xiao_pig
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-4-20
收藏
得分:0 
恩,3楼说的对,这个我在交作业的时候想到了,及时改了过来,发帖时没有注意,呵呵
2006-05-05 18:53
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
这么复杂的程序啊?
学习中!!

奋斗改变一切!!
2006-05-05 21:04
uk90
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-5-10
收藏
得分:0 
high!!!
2006-05-10 21:14
反方向的鱼1984
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-5-27
收藏
得分:0 

谢谢啦!

2006-05-27 20:07
快速回复:自己弄的算术表达式的程序……
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055310 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved