(11)中南大学离散数学实验报告 联系客服

发布时间 : 星期五 文章(11)中南大学离散数学实验报告更新完毕开始阅读970c221c964bcf84b9d57b43

if(p1==-1)//如果是数字,直接给P1 p1=sz[i-1];

if(p2==-1)//如果是数字,直接给P2 p2=sz[i+1];

dt[j+2]=p1 || p2;//或运算 sz[i-1]=j+2; j++; j3++; p1=-1; p2=-1;

for(i1=i;i1

for(i=0;i

for(i1=0;i1

if(sz[i-1]==ccu[i1])//将变量赋值并给P1 p1=icu[i1];

if(sz[i+1]==ccu[i1])//将变量赋值并给P2 p2=icu[i1]; }

for(i2=2;i2

if(sz[i-1]==i2) //如果为前计算结果,将结果赋值并给P1 p1=dt[i2];

if(sz[i+1]==i2) //如果为前计算结果,将结果赋值并给P2 p2=dt[i2]; } if(sz[i-1]==-2)//如果是前运算结果的0,则P1等于0 p1=0; if(sz[i+1]==-2)//如果是前运算结果的0,则P2等于0 p2=0; if(p1==-1)//如果是数字,直接给P1 p1=sz[i-1]; if(p2==-1)//如果是数字,直接给P2 p2=sz[i+1]; dt[j+2]=!p1 || p2;//蕴含运算 sz[i-1]=j+2; j++; j4++; p1=-1;

- 20 -

p2=-1; for(i1=i;i1

if(sz[i-1]==ccu[i1])//将变量赋值并给P1 p1=icu[i1];

if(sz[i+1]==ccu[i1])//将变量赋值并给P2 p2=icu[i1]; }

for(i2=2;i2

if(sz[i-1]==i2) //如果为前计算结果,将结果赋值并给P1 p1=dt[i2];

if(sz[i+1]==i2) //如果为前计算结果,将结果赋值并给P2 p2=dt[i2]; }

if(sz[i-1]==-2)//如果是前运算结果的0,则P1等于0 p1=0;

if(sz[i+1]==-2)//如果是前运算结果的0,则P2等于0 p2=0;

if(p1==-1)//如果是数字,直接给P1 p1=sz[i-1];

if(p2==-1)//如果是数字,直接给P2 p2=sz[i+1];

dt[j+2]=(!p1 || p2)&&(!p2 || p1);//等值运算 sz[i-1]=j+2; j++; j5++; p1=-1; p2=-1;

for(i1=i;i1

return dt[j+1];//返回结果 } }

- 21 -

七. 其他收获和体会。

这个实验分3个题,A类题其实是很简单的,而C类题如果是在B类题的基础上构建,相对来说也是一个不困难的题,所以主要在B类题上花费了大量时间,一开始想用中序表达式转变为逆波兰式的方法来解决,但是总有一些零零散散的问题困扰,况且对于栈和二叉树之类的东西在学习C语言时接触很少,所以困难更大,经过多次失败后,还是最后用最简单同时也是最麻烦的方法来解决这个问题。利用函数一步步来解决,所以在个别功能上来说有一些不完美,比如纠错,因为时间有限,有个别地方没有设置出错提示。

也许是很久没看C语言了,导致很多基本的语句都已经并不熟练了,通过这次实验,让我从一定程度上找回了一点以前做课程设计时的感觉。在编程过程中,最重要的其实是对细节方面的把握。

A类题的逻辑抽象和编程语言的表达都非常基础,所以能不能把程序的细节考虑完善是非常重要的,有没有输入提示,错误提示等等,这些东西是考验一个人考虑问题的全面性的一个方式,我们应该从现在就养成这样良好的习惯。

B类题,在设计上主要有以下几个问题:

1.优先级的问题,要如何解决优先级的问题,最后我直接用先后执行来解决。

2.括号问题,对于运算来说,解决括号问题很重要,而我是从最内级括号向外层层运算,最后得出结果。

3.真值表问题,真值表利用二进制的原理,递加得到。

4.赋值问题,一开始这个问题困扰了我很久,后来发现直接用一个赋值函数,每次运行都直接运行一次就可以很好的解决了。

这些是在做B类题时主要遇到的问题。

C类题,其实这个题在B类题得出结果之后可以比较简单的解决,因为已经有真值表,只要将最后结果分类,并将其分类列出就可以了。

总的来说,本次实验总体上是比较成功的,也让我学到了很多东西。 #include #include #include using namespace std; typedef int datatype; typedef struct node {

- 22 -

datatype key;

struct node *lchild,*rchild;

}bsnode;

typedef bsnode *bstree;

void insertbstree(bstree *t,datatype x) { bstree f,p; p = *t; //cout<

while(p)//找到插入点的位置 { //if(x == (p->key))// // return; f = p; if(x < p->key) p = p ->lchild; else

p = p ->rchild;

//f = p; } //f = p;

p =(bstree)malloc(sizeof(bsnode));

p->key = x;

p->lchild=p->rchild=NULL; if(*t == NULL) *t = p;

else

{ if(x < (f->key))

f->lchild = p;

- 23 -