算术表达式的求解课程设计说明书文档格式.docx

上传人:b****5 文档编号:17541019 上传时间:2022-12-07 格式:DOCX 页数:14 大小:76.80KB
下载 相关 举报
算术表达式的求解课程设计说明书文档格式.docx_第1页
第1页 / 共14页
算术表达式的求解课程设计说明书文档格式.docx_第2页
第2页 / 共14页
算术表达式的求解课程设计说明书文档格式.docx_第3页
第3页 / 共14页
算术表达式的求解课程设计说明书文档格式.docx_第4页
第4页 / 共14页
算术表达式的求解课程设计说明书文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

算术表达式的求解课程设计说明书文档格式.docx

《算术表达式的求解课程设计说明书文档格式.docx》由会员分享,可在线阅读,更多相关《算术表达式的求解课程设计说明书文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

算术表达式的求解课程设计说明书文档格式.docx

typedefintStatus;

//用模板实现的链式结构堆栈类

template<

classT>

classstack

{

private:

structlink

Tdata;

//结点数据域

link*next;

//下一结点指针

link(TData,link*Next)

{//结构体构造函数

data=Data;

next=Next;

}

}*head;

//堆栈顶指针

public:

stack();

//构造函数(初始化栈)

~stack();

//析构函数(销毁栈)

voidpush(TData);

//压栈操作

Tgettop()const;

//取栈顶元素

Tpop();

//出栈操作

Tgetvalue(intindex);

//返回栈底开始第INDEX个栈中值

voidtraverse(intn);

//遍历栈N个数换行

intempty();

//判断栈是否为空,1是,0非

intsizeofstack();

//返回栈的大小

voidclear();

//清空栈

};

//类模板成员函数的实现

template<

stack<

T>

:

stack()//构造函数

head=0;

}

~stack()//析构函数

link*cursor=head;

while(head)

cursor=cursor->

next;

deletehead;

head=cursor;

}

voidstack<

push(TData)//压栈操作

head=newlink(Data,head);

Tstack<

gettop()const//取栈顶元素

returnhead->

data;

pop()//出栈操作

if(head==0)return0;

Tresult=head->

link*oldhead=head;

head=head->

deleteoldhead;

returnresult;

getvalue(intindex)//返回栈底开始第INDEX个栈中值

link*cursor=head;

inti=1;

intstacklen=sizeofstack();

if(index<

=0||index>

stacklen)return0;

while(i<

=(stacklen-index))

i++;

returncursor->

voidstack<

traverse(intn)//遍历栈

link*cursor=head;

intiEnterSign=1;

//换行标识

while(cursor)

cout<

<

cursor->

data<

"

"

;

if(iEnterSign%n==0)cout<

endl;

iEnterSign++;

if((iEnterSign-1)%n!

=0)cout<

intstack<

empty()//判断栈是否为空,1是,0非

returnhead==0?

1:

0;

sizeofstack()//返回栈的大小

intsize=0;

while(cursor)

size++;

returnsize;

clear()//清空栈

while(cursor&

&

next)

intOperator(charch)

if(ch=='

+'

||ch=='

-'

*'

/'

('

)'

#'

return(TRUE);

else

return(FALSE);

charPrecede(charch1,charch2)

charch;

switch(ch1)

{

case'

{

switch(ch2)

ch='

>

'

break;

break;

}

if(ch2=='

else

='

return(ch);

intcalc(intx,charch,inty)

intz;

switch(ch)

case'

z=x+y;

z=x-y;

z=x*y;

if(y!

=0)

z=x/y;

else

//z=0;

cout<

分母不能仅为0!

break;

return(z);

intmiddexpression(char*exp)//求解算式表达式

stack<

int>

*opnd=new(stack<

);

char>

*optr=new(stack<

charch=*exp;

intx=0,y,z;

intresult;

optr->

push('

while(ch!

||optr->

gettop()!

if(!

Operator(ch))

{

x=ch-48;

opnd->

push(x);

ch=*++exp;

if(ch!

\0'

!

不符合要求,运算数必须是0~9之间的数"

exit(0);

}

switch(Precede(optr->

gettop(),ch))

case'

//栈顶元素优先权低

optr->

push(ch);

ch=*++exp;

case'

//脱括号并接收下一字符

optr->

pop();

//退栈并将运算结果入栈

if(opnd->

sizeofstack()<

2)

cout<

表达式不合法!

exit(0);

}

x=opnd->

y=opnd->

z=calc(y,optr->

pop(),x);

opnd->

push(z);

x=0;

break;

if(ch=='

表达式应该以'

结束!

exit(0);

result=opnd->

if(opnd->

empty()&

pop()=='

return(result);

else

输入不合法!

voidmain(void)//程序入口函数

charexp[50];

数据结构课程设计-请输入算术表达式(以#结束):

cin>

exp;

middexpression(exp)<

五、测试结果及分析

运行程序,输入数据及所得结果如下表;

算式表达式

3+4/2#

3*(5-2)+6/3

3*(5-2)+6/3#

21*38/(3+6/0)#

21/7*3+(4/2-1)

结果

5

11

2

通过实际的将程序输入软件中,执行后所列出的表中,并且通过记录的所得的上表可知,给定的一个算术表达式,通过程序所求出来的值是正确的,并且当输入数值出现错误或者是表达式输入错误时,也会给出相应的错误提示,所以程序达到了原先所要的设计的要求。

六、心得体会和参考资料

通过这次课程设计,学到了许多的知识,并且对以前没有掌握好的知识有了更进一步的理解,对现在所学的知识也有了一个新的认识。

在将所学到的知识应用在实践中,锻炼了自己的能力,但其中也认识到了自己许多的不足,现总结如下:

1、要真正的学好C++语言,首先要把外围的知识的学好,通过这次课程设计,我体会到了C++程序的强大了!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1