C语言算数表达式求值课程设计报告计算机C++资料_第1页
C语言算数表达式求值课程设计报告计算机C++资料_第2页
C语言算数表达式求值课程设计报告计算机C++资料_第3页
C语言算数表达式求值课程设计报告计算机C++资料_第4页
C语言算数表达式求值课程设计报告计算机C++资料_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

se'-':i=1;break;case'*':i=2;br}//作只有加减乘除运算的表达式求值Node*ComputeuctNodeyschar{charc;structNodese'-':i=1;break;case'*':i=2;br}//作只有加减乘除运算的表达式求值Node*ComputeuctNodeyschar{charc;structNode){e=(CharNode*)malloc(sizeof(C-二.总体方案设计2三.详细设计3四.程序的调试与运行结果说明4五.课程设计总结5本课程设计是为了配合?数据构造?课程的开设,通过设计一个完ext->c;n=n->next->next;mincharj=3;break;case'#':j=4;break;}i:JiWei=8;max=56;break;case10:Jeak;case'/':i=3;break;case'#':.ext->c;n=n->next->next;mincharj=3;break;case'#':j=4;break;}i:JiWei=8;max=56;break;case10:Jeak;case'/':i=3;break;case'#':-1.要充分认识课程设计对自己的重要性,认真做好课程设计前的各项分工明确,但要保持联系畅通,密切合作,培养良好的互相帮助和团队二总体方案设计1.使用双链表的数据构造表示数据的存储,将用户输入的表ar,minchar)=='=')&&mark!=1){m=j=3;break;case'#':j=4;break;}iharNode));e->c='0';p=(CharNode须按时,ar,minchar)=='=')&&mark!=1){m=j=3;break;case'#':j=4;break;}iharNode));e->c='0';p=(CharNode须按时,按质,按量完成课程设计。6.小组成员之间,分工明确,-{}CharNode;{{}Node;{}Node_ys_char;数与运算符已经分开,将这个表达式的头指针传递到我所编写函数mark1=0;n=0;i=0;if(mark2==1)no有括号时调用四那么运算函数直接计算。如果一开场输入的表达式中(Node*p){intmark=0;Node*m,*n;c的优先级高return'>';if(from[i][j]==mark1=0;n=0;i=0;if(mark2==1)no有括号时调用四那么运算函数直接计算。如果一开场输入的表达式中(Node*p){intmark=0;Node*m,*n;c的优先级高return'>';if(from[i][j]==-Node*StackChange(CharNode*top,intm)Node*Compute(Node*p)Node*GetOutcome(Node*head)main〔〕理制转化为10进制作只有加减乘除运算的表达式主要局部的详细流程图〕在编写只有加减乘除的表达式求值的表达式求值时,原始思想是用两个指输入表达式针分别指向相邻的两个运算符,假设后者大,那么进展后面运算符的运算,然输入表达式后指针继续后移,当再次遇到的两个运算符,前者与后者相等,那么进展前面运算符的运算;此算法思想错误,导致计算6+2*3+1#结果正确,而当计算特殊情况处理将数与运算符分开;}Nodeyschar;三详细设计我任务是整个程序的算法设数的围;进一步的设想:将数分段存储,存动态分配,使其能进展天=n->next->c;if((Precede(maxchawhile(q->c<=min){nodechar->nex;}Nodeyschar;三详细设计我任务是整个程序的算法设数的围;进一步的设想:将数分段存储,存动态分配,使其能进展天=n->next->c;if((Precede(maxchawhile(q->c<=min){nodechar->nex-致结果错误。后来将程序改为先进展优先级高的运算符的运算,当优先级相等时,不计算。指针后移,当遇到表达式完毕标志时,便将指针移到表达式的头位置,此时,判断是否进展运算的条件发生变化,当前后运算符的优先级相等时,进展前面运算符的运算;使得第一次将乘除运算符运算完,第二进展只有五课程设计总结达式的输入,得出了正确结果,但不排除还有某些漏洞使得一些特殊情况的表缺乏:结果都以10进制形式表示,用户不能改变;结果的10进制形式不能超{}CharNode;{se'-':i=1;break;case'*':i=2;br'){p=k->next;q->next->c='#';R=next=nodechar;nodechar->nextc=进一步的测试。特点:本程序能进展小数、以及2se'-':i=1;break;case'*':i=2;br'){p=k->next;q->next->c='#';R=next=nodechar;nodechar->nextc=进一步的测试。特点:本程序能进展小数、以及2进制、8进制、1-{}Node;{}Node_ys_char;{{}{k=m;}}q=m->next;}if(q->next->c。二、需求分析本课程设计的课题为表达式求值,要求:1.用户将者大,那么进展后面运算符的运算,然后指针继续后移,当再次遇到k=m;}}q=m->next;}if(q->next->c。二、需求分析本课程设计的课题为表达式求值,要求:1.用户将者大,那么进展后面运算符的运算,然后指针继续后移,当再次遇到,次层括号..................每次找到括号的-}}{{p->next=q;}{e->next=p;nhead;}q=q->next;if(q->c<=min)情况作处理。3.将数与运算符分开;4.nhead;}q=q->next;if(q->c<=min)情况作处理。3.将数与运算符分开;4.依次找到表达式最层括号(p->next->c!='#'){maxchar=n->n*q,*R;Nodeyschar*m,*n,*t,*k;n=-p->next=q;}{{e->next=q;p->next=e;}{p->next=q;}}p=p->next;}//将数与运算符分开,并将其他进制转化为10进制Node*StackChange(CharNode*top,intm){CharNode*p,*q;储字符的结点类型typedefstructCharNode{挥主观能动性.结合课题储字符的结点类型typedefstructCharNode{挥主观能动性.结合课题,独立思考,努力钻研,勤于实践,勇于创deyschar*)malloc(sizeof(Nodeys握数据构造的应用,算法的编写,类C语言的算法转换成C程序并用-Node*node,*head;Node_ys_char*node_char;{case2:max=50;case8:max=56;JiWei=10;max=97;JiWei=16;max=103;}{while((q->c>min)&&(q->c<max)||(q->c==46)){{mark_1=1;q=q->next;}表达式变为一个普通的表达式,其中数与运算符已经分开,将这个表括起来〕,以及2进制,8表达式变为一个普通的表达式,其中数与运算符已经分开,将这个表括起来〕,以及2进制,8进制,10进制,16进制的数〔为减小[i]=q->c;q=q->next;i++;}}for(h=='>'||mark==1){switch(m->next-{q=q->next;}{q=q->next;}}{}{}node->n=x+y;mark_1=0;node_char->next=node;node_char->c=q->c;node->next=node_char;node_char->next_c=NULL;node_char->next=NULL;=='>'||mark==1){switch(m->next编..-case'*':j=2;break;case'/':har->next=NULL;}else{node->nexn;}if(Precede(maxchar,minchar)=='>'||mark==1){switch(m->next编..-case'*':j=2;break;case'/':har->next=NULL;}else{node->nexn;}if(Precede(maxchar,minchar)-{}q=q->next;while(q->c<=min){node_char->next_c=(Node_ys_char*)malloc(sizeof(Node_ys_char));node_char->next_c->c=q->c;q=q->next;//node->next=node_char;node_char=node_char->next_c;node_char->next_c=NULL;node_char->next=NULL;}{node->next=node_char;node_char->next_c=NULL;node_char->next=NULL;}{head=node;mark_2=1;}}型typedefstructNode.可修编..-{long=0;break;case'-':j=1;break;.型typedefstructNode.可修编..-{long=0;break;case'-':j=1;break;.可修;p->next->c='#';returntop;}//将储围〕;2.输入的数可以为小数〔为减小难度,小数的整数与小数-}Node*Compute(Node*p){Node*m,*n;charmax_char,min_char;m=n=p;{max_char=n->next->c;n=n->next->next;min_char=n->next->c;{m=n;}{switch(m->next->c){case'+':m->n=m->n+n->n;break;case'-':m->n=m->n-n->n;break;case'*':m->n=m->n*n->n;break;case'/':m->n=m->n/n->n;break;}m->next=n->next;n=m;}{m=n=p;mark=1;=n-1;h>=0;h--){x=(a[n-h-1]-48)毕标志时,便将指针移到表达式的头位置,此时,判断是否进展运算.5〕+3#=n-1;h>=0;h--){x=(a[n-h-1]-48)毕标志时,便将指针移到表达式的头位置,此时,判断是否进展运算.5〕+3#,第三次.可修编..-替换后为0.5+3#,当没eak;case'/':i=3;break;case'#':-}}}Node*GetOutcome(Node*head){p=q=head;{{m=q->next;k=m;}elseif(q->next->next_c==NULL)q=q->next->next;{m=q->next->next_c;{k=m;}while(m->next_c!=NULL){m=m->next_c;m=q->next->nextc;k=q->next;//t输入表达式,并对特殊情况做处理CharNode*CreatRngdoublen;structNodeyschar*nexuctNodeyschar{charc;structNodem=q->next->nextc;k=q->next;//t输入表达式,并对特殊情况做处理CharNode*CreatRngdoublen;structNodeyschar*nexuctNodeyschar{charc;structNode-{k=m;}}q=m->next;}{n=q->next;}}{p=k->next;R=Compute(p);t->next_c=NULL;R->next=n->next_c;GetOutcome(head);}{R=Compute(head);}}{运算五课程设计总结进过调试程序能得出大多数表达式的正确结果,文数字运算;录入其他的运算符例如指数运算,开

温馨提示

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

评论

0/150

提交评论