数据结构课程设计(算术表达式求值)计算器讲课稿_第1页
数据结构课程设计(算术表达式求值)计算器讲课稿_第2页
数据结构课程设计(算术表达式求值)计算器讲课稿_第3页
数据结构课程设计(算术表达式求值)计算器讲课稿_第4页
数据结构课程设计(算术表达式求值)计算器讲课稿_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/1数据结构课程设计(算术表达式求值)-计算器讲课稿数据结构课程设计(算术表达式求值)-计算

高级语言程序设计

《算术表达式求值》

课程设计报告

算术表达式求值

系统可以实现实现对算术四则混合运算表达式求值,并打印求值过程中运算符栈、操作数栈的变化过程。

其次章系统分析

开头运行时界面如下:

你可以输入一个表达式,按E对其进行求值。

第四章系统实现

#include

#include

#include

#include

#defineN100

doublenumStack[N]={0};//操作数栈

intnumTop;

charopStack[N];//运算符栈

intopTop;

voidprint_num(doublestr1,intn)

{

inti;

printf("\n操作数栈:\n");

for(i=0;i0)

{

if(str[i]>='0'

elseif(k==1

else

{

if(i>0&&!op(str[i-1])&&str[i]!='('&&str[i-1]!=')')

{

numStack[numTop++]=num*k;

if(opTop!=0

num=0;j=1;k=1;

}

if(opTop==0||str[i]=='(')

{opStack[opTop++]=str[i];print_op(opStack,opTop);}

elseif(str[i]==')')

{

while(opTop>0

if(opTop!=0

print_op(opStack,opTop);

}

numTop--;

}

if(opStack[opTop]!='(')return0;

}

else

{

if(str[i]=='\0'

while(opTop>0

if(opTop!=0&&numTop!=0)

{

print_num(numStack,numTop-1);print_op(opStack,opTop);

}

numTop--;

}

if(str[i]!='\0')

opStack[opTop++]=str[i];

if(opTop!=0

}

}

if(str[i]!='\0')

i++;

}

if(numTop!=1||opTop!=0)

return0;

return1;

}

voidmenu

{

system("cls");

printf("_______________________________\n");

printf("Clear(C)|Equal(E)|Quit(Q)\n");

printf("\n");

}

intmain(void)

{

inti=0,j=0,k;

charstr[N]="\0";

charnum[N]="\0";

charsave[N]="\0";

charch;

doubletemp;

unsignedlongtemp2;

menu;

printf("inputanexpression,presskey'E'tocompute\n");

ch=getch;

while(1)

{

if(ch==')'||op(ch)||ch>='0'

str[i]='\0';

menu;

printf("inputanexpression,presskey'E'tocompute\n");printf("%s",str);

if(ch=='-'

num[j]='\0';

}

else

j=0;

}

if(ch=='C'||ch=='c')

{

if(strlen(str))

str[--i]='\0';

menu;

printf("inputanexpression,presskey'E'tocompute\n");printf("%s",str);

}

if(ch=='E'||ch=='e')

{

if(compute(str))

{

printf("\n=%g\n",numStack[0]);

j=0;temp=numStack[0];

if(temp=10)k*=10;

while(k)

{

num[j++]=temp2/k+'0';

num[j]='\0';

temp2=temp2%k;

k/=10;

}

temp=temp-(int)temp;

if(temp!=0)

{

num[j++]='.';

num[j]='\0';

temp+=0.0000005;

}

for(k=6;k>0;k--)

{

if(temp==0)break;

temp*=10;

num[j++]=(int)temp+'0';

num[j]='\0';

temp=temp-(int)temp;

}

}

i=0;j=0;str[0]='\0';

}

if(ch=='Q'||ch=='q')

{

printf("\nareyousuretoquit?(Y/N)\n");

ch=getch;

if(ch=='Y'||ch=='y')break;

else

{

menu;

printf("inputanexpression,presskey'E'tocompute\n");printf("%s",str);

}

}

ch=getch;

}

return0;

}

第五章系统测试

1.先输入:3+2*5后按E求值

2.再输入:12/4-5后按E求值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论