| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 666 人关注过本帖
标题:[求助]解决一下程序运行没有结果
取消只看楼主 加入收藏
lzf0112
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2006-4-9
收藏
 问题点数:0 回复次数:5 
[求助]解决一下程序运行没有结果

这是一个关于求算术表达式的程序,为什么每次我一运行输入表达式后都没有结果出来,也没有提示错误????求各位帮帮忙啊。。。。。。。。先谢谢咯!!

#include <iostream.h>
#include <string.h>
#include <math.h>
template <class t>
class stack
{
private:
int size;
int top;
t *data;
public:
stack(int =20);
~stack()
{
delete [] data;
}
void push(t e);
t pop();
int empty() const
{
return top==0;
}
};
template <class t>
stack<t>::stack(int s)
{
size=s>0&&s<100 ? s:20;
top=0;
data=new t [size+1];
}
template <class t>
void stack<t>::push(t e)
{
if(top!=size)
data[++top]=e;

}
template <class t>
t stack<t>::pop()
{
if(empty()!=0)
return data[top--];
else return 0;
}


char proceed(char ch1,char ch2)
{ char r;
switch(ch1)
{
case '+':case '-':switch(ch2)
{
case '*':case '/':case '(':case '^':r='<';break;
default:r='>';
}break;
case '*':case '/':switch(ch2)
{
case '(':case '^':r='<';break;
default:r='>';
}break;
case '(':switch(ch2)
{
case ')':r='=';break;
case '#':r='f';break;
default:r='<';
}break;
case ')':switch(ch2)
{
case '(':r='f'; break;
default:r='>';
}break;
case '^':switch(ch2)
{
case '(':r='<';break;
default:r='>';
}break;
case '#':switch(ch2)
{
case ')':r='f';break;
case '#':r='=';break;
default:r='<';
}break;
}
return r;
}
double calculate(double a,char ch,double b)
{
double r;
switch(ch)
{
case '+':r=a+b;break;
case '-':r=a-b;break;
case '*':r=a*b;break;
case '/':if(b==0) cout<<"除数不能为0";break;
r=a/b;break;
case '^':r=pow(a,b);break;
}
return r;
}
void main()
{
stack<double> s_num(50);
stack<char> s_opr(50);
int i=0;
double r,a,b;
char p[20],s[20],j;
cin>>p;
s_opr.push('#');
strcat(p,"#");
j=s_opr.pop();
while(j!='#'||p[i]!='#')
{
if(p[i]>='0'&&p[i]<='9'||p[i]=='.')
{
int k=0;
while(p[i]>='0'&&p[i]<='9'||p[i]=='.')
s[k++]=p[i++];
s[k]='\0';
r=atof(s);
s_num.push(r);
}
else
switch(proceed(j,p[i]))
{
case '<':s_opr.push(j);j=p[i];i++;break;
case '=':i++;j=s_opr.pop();break;
case '>':b=s_num.pop();
a=s_num.pop();
r=calculate(a,j,b);
s_num.push(r);
j=s_opr.pop();
break;
case 'f':break;
}
}
cout<<"算术表达式的值为:"<<s_num.pop();
}

搜索更多相关主题的帖子: 结果 运行 
2006-06-26 16:17
lzf0112
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2006-4-9
收藏
得分:0 
斑竹帮忙解决一下啊。。。。。。。。。。。。。。。。。。。
2006-06-26 16:59
lzf0112
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2006-4-9
收藏
得分:0 

斑竹还是不行啊~~~

2006-06-26 17:27
lzf0112
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2006-4-9
收藏
得分:0 
谢谢斑竹赐教,那我自己先调试一下,要是真的调试不出来,那还得麻烦斑竹指导。。。。。。。。。。
2006-06-26 17:33
lzf0112
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2006-4-9
收藏
得分:0 

斑竹,还是解决不了啊,真郁闷不知道错在哪里,望斑竹指教~~~

2006-06-26 21:54
lzf0112
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2006-4-9
收藏
得分:0 

晕,问题真的出在这啊,现在改一下就行了但是还是有一些逻辑错误,我自己慢慢调试。
谢谢斑竹的指点。。。。。

2006-06-27 10:06
快速回复:[求助]解决一下程序运行没有结果
数据加载中...
 
   



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

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