加入初等函数及拓展了操作数范围的自动机

加入初等函数及拓展了操作数范围的自动机

         经过整整一个上午的时间,总算将之前的自动机的操作运算加进了初等函数,主要包括一些三角函数(sin,cos,tan)和log,ln等,奇怪的是控制台下包含的math头文件里面竟然没有cot的操作函数囧,最终在 .Net下引入的命名空间System下的math类库也是一样,幸亏咱的数学功底还行,还知道cotx*tanx=1,最后实在要加cot函数操作咱就来个cotx=1/tanx,呵呵,猥琐猥琐...
       在加入初等函数操作的同时还拓展了操作数的范围,之前是对非负实数的运算,现在可以到整个实数范围,即加入负数的操作。
       这两项功能的拓展说到底其实就是加入单目运算符而已。在转后缀表达式的阶段扫描到这类运算符时立马将其压入栈内即可,与此同时后期在对后缀表达式进行运算时从栈内只弹出一个操作数进行所需要的运算即可。
                                         加入初等函数及拓展了操作数范围的自动机_第1张图片
          在做自动机的过程整个就一与铺天盖地的bugs周旋滴战争,上次刚做完简陋版自动机时满怀欣喜地让奋哥测试了下,谁知个老XX整了条n长的复杂表达式,更恐怖的是表达式内还有n括号嵌括号...程序一下子就莫名其妙地崩了==b
       找了大半夜也不知道错在哪里,照理说基本算法思想是正确的,再复杂的表达式也只是CPU的计算问题而已,郁闷了个晚上第二天早上一看原来是一个判断少打了个{},我倒...==b
                               加入初等函数及拓展了操作数范围的自动机_第2张图片
         后期不断拼命测bug,把程序往死里整,总算也调掉了不少bug,程序健壮了不少,再来吧,奋哥,wkk...

你可能感兴趣的:(加入初等函数及拓展了操作数范围的自动机)