首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

栈兑现中锥表达式转后缀表达式,保存并计算

2014-05-31 
栈实现中锥表达式转后缀表达式,保存并计算这是我们数据结构的作业,我只会实现那些数是int 型的,不会实现浮

栈实现中锥表达式转后缀表达式,保存并计算
这是我们数据结构的作业,我只会实现那些数是int 型的,不会实现浮点型的,求破!
[解决办法]
楼主的意思我不太明白,再确认一下。你能处理整型的实现,比如3*4+5*(8+2),但是不能实现浮点型,比如3.0*4.5+5.2*(8+2)是不是这个意思?利用c库函数scanf(),会发现处理整形和浮点型的区别不大的。两种情况都分三部骤,第一词法分析就是把键盘输入的表达式分解成一个一个的元素,包括数字和运算符。第二阶段可以采用栈转化中缀为后缀;第三阶段用对后缀表达式求值,这一阶段也需要用到第一阶段的词法分析。第一阶段是处理整型和浮点型的一个区别点。下面是个实现第一阶段的小例子,例子里只打印分割出的元素,楼主可以把分割出的元素进行压栈。
-------------------------
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <ctype.h>
  4 int main(int argc, char *argv[]){
  5     char c;
  6     double element;
  7     printf("please input an expression:\n");
  8     while(1){
  9         while((c=getchar())==' '
[解决办法]
c=='\t');
 10         if(c=='\n'
[解决办法]
c==EOF) break;
 11         if(c=='.'
[解决办法]
isdigit(c)){
 12             ungetc(c,stdin);
 13             /*get element:%lf for float ,%d for int*/
 14             scanf("%lf",&element);
 15             /*can use element for futher operation, here just print it*/
 16             printf("%lf\n",element);
 17         }
 18         else{
 19             printf("%c\n",c);
 20         }
 21     }
 22     return 0;
 23 }
-----------------------------------------------
运行情况:
please input an expression:
2*(3+4.5)-6.8
2.000000
*
(
3.000000
+
4.500000
)
-
6.800000

热点排行