作者conan77420 (小马非马)
看板C_and_CPP
标题[问题] postfix转infix运算
时间Thu Jul 30 13:51:29 2009
我知道我写的很不完整,有很多漏洞
不过现在我想先试出最基本的例子
输入 12+ 可以得到3的结果
请问为什麽以下程式的输出结果有误?请高手指正,谢谢 > <"
#include<iostream.h>
#include <string.h>
#define space 20
char str[space];
int s=0;
void push(int);
int pop(void);
int main()
{
printf("输入後序运算式:");
scanf("%s",str);
int l=strlen(str)-1;
for(int s=0; s<l ;s++)
{
if(str[s]>='0' && str[s]<='9') //若阵列中是1~9则转换成数字
{
str[s]=str[s]-'0';
}
else //若是运算子则做以下
{
if(str[s]=='+')
{push(pop()+pop());}
else if(str[s]=='-')
{push(pop()-pop());}
else if(str[s]=='+')
{push(pop()*pop());}
else if(str[s]=='/')
{push(pop()/pop());}
else
{printf("error");}
}
}
printf("ans= %d",str[s]); //输出最後结果
system("pause");
}
============================ //push、pop 副程式
void push(int n)
{
if(top>=space-1)
{printf("stack is full!");}
else
{str[s]=n;}
}
int pop(void)
{
if(s==0)
{printf("stack is empty!");}
else
{return str[--s];}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.129.195
1F:→ khalid:错误太多,数字没push进去,-和/运算子顺序不对,请参考K&R 07/30 14:21
2F:→ dendrobium:把VC6先丢掉吧... 07/30 14:29
3F:推 joefaq:没错 先把VC6砍掉 07/30 14:37
4F:推 zlw:从哪边看出VC6的...iostream.h吗? 07/30 14:42
5F:推 dendrobium:yes 07/30 14:42
6F:推 zlw:原来如此 07/30 14:44
7F:推 VictorTom:DevC++不是也可以写 #include <iostream.h> 的吗XD 07/30 16:29
8F:→ conan77420:下午脑袋不清醒写的果然惨不人睹,现在看才知道有多白 07/30 16:50
9F:→ conan77420:痴,谢谢楼上几位...还有...我的确是用dev... 07/30 16:51