主题:布尔表达式的翻译 帮帮忙拉
ysybetty
[专家分:0] 发布于 2005-06-20 09:23:00
布尔表达式的翻译程序,要求用逆波兰式输出
回复列表 (共6个回复)
沙发
星尘落 [专家分:20] 发布于 2005-06-20 10:37:00
GG,这属于专家级的题目了,与其在这里问,不如去问教授了~~~~~~~~~
[fly]~~~~~~~~~~~~~~~~~~~~~~~~星 ☆ 尘 ★ 落~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[/fly]
板凳
星尘落 [专家分:20] 发布于 2005-06-20 10:38:00
晕,没看清啊,不是GG,而是PPMM,对此抱歉~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 楼
ysybetty [专家分:0] 发布于 2005-06-20 11:32:00
啊这个样子啊那不是很郁闷啊
我们要拿程序去给老师检查才能写报告呢很郁闷的。。。。。。。。。
4 楼
hk18 [专家分:2230] 发布于 2005-06-21 08:29:00
这几天怎么就那么多人问问题???
你会编程输出逆波兰式吧?
(别找我,论坛里聊!)
5 楼
ysybetty [专家分:0] 发布于 2005-06-21 08:49:00
会呀
6 楼
quyantao [专家分:0] 发布于 2007-06-20 11:02:00
你是哪儿个学校的,怎么这么笨啊,这个都不会啊 ?我帮你写了个,代码在下面啊:
#include<iostream.h>
#include<iostream>
#include"head.h"
extern int index;
extern WORDS word[20];
extern int array[20];
int F(int);
int G(int);
int T(int);
int E(int);
void Grammar(int length)
{
int i=0;
while((i<length)&&(word[i].ID!=99))
{
i=E(i);
if(word[i].ID==99)
{
cout<<"语法错误!请输入正确的句子"<<endl;
exit(0);
}
}
}
int E (int i)
{
int ii;
i=T(i);
while (word[i].ID==1||word[i].ID==2)
{
ii=i;
i++; //向前移动一个位置
i=T(i);
array[index]=ii;//
index++;
}
return i;
}
int T(int i)
{
int ii;
i=G(i);
while(word[i].ID==4||word[i].ID==5||word[i].ID==6||word[i].ID==7||word[i].ID==8||word[i].ID==9)
{
ii=i;
i++; //向前移动一个位置
i=G(i);
array[index]=ii;
index++;
}
return i;
}
int G(int i)
{
int ii;
i=F(i);
while(word[i].ID==3)
{
ii=i;
i++;
i=F(i);
array[index]=ii;
index++;
}
return i;
}
int F(int i)
{
if (word[i].ID==0) //处理标识符
{
array[index]=i;
index++;
i++;
}
else
{
if(word[i].ID==10)
{
i++; //ADVANCE();
i=E(i);
if (word[i].ID==11)
i++; //ADVANCE();
else
word[i].ID=99;
}
else if(word[i].ID==3)
;
else
{
cout<<"括号不匹配!请输入正确句子 "<<endl;
exit(0);
word[i].ID=99;//ERROR();
}
}
return i;
}
我来回复