zoukankan      html  css  js  c++  java
  • 求表达式的值

    晚上赶快改了下上午写的代码。。。。只是加了一个小数点的的处理。。。。

    没对负数进行处理了。。。

    汗。。。。我更加无语了。。。。

    看来以后做题的时候要多想想才去写。。。要不然到时候又得改动。。。。还好不要改得太多了。

    要是大项目。。。那有点改了。。。

    吸取教训吧。。。。。。/

    贴下改了小数点的部分代码

    转换成后缀表达式那的代码

    else if(::isdigit(*tChar))
      {
       while((*tChar >= '0') && (*tChar <= '9'))
       {
        tSave[i] = *tChar;
        ++i;
        ++tChar;
       }
       if(*tChar == '.')
       {
        tSave[i] = *tChar;
        ++i;
        ++tChar;
        while((*tChar >= '0') && (*tChar <= '9'))
        {
         tSave[i] = *tChar;
         ++i;
         ++tChar;
        }
       // --tChar;
       }
       --tChar;
       tSave[i] = ' ';
       ++i;

      }

    //由后缀表达式得到的结果

    int GetResult(char *tPtr,double  *tResult)
    {
     Stack<double> s;
     char *tChar = tPtr;
     double  tInt;
     double  tDec;
     double  one, two;
     while(*tChar != '#')
     {
      if(*tChar == ' ')
      {
       ++tChar;
       continue;
      }
      else if(isdigit(*tChar))
      {
       tInt = 0.0;
       tDec = 0.1;
       while((*tChar >= '0') && (*tChar <= '9'))
       {
        tInt = tInt*10 + *tChar - '0';
        ++tChar;
       }
       if(*tChar == '.')
       {
        ++tChar;
        while((*tChar >= '0') && (*tChar <= '9'))
        {
         tInt += tDec*(*tChar - '0');
         tDec = tDec*0.1;
         ++tChar;
        }
       }
       --tChar;
       s.Push(tInt);
      }
      else if((*tChar == '+') || (*tChar == '-') || (*tChar == '*') || (*tChar == '/'))
      {
       if(s.IsEmpty())
        s.Push(*tChar);
       else
       {
        one = s.Top();
        s.Pop();
        two = s.Top();
        s.Pop();
        switch(*tChar)
        {
        case '+':s.Push(two+one);
         break;
        case '-':s.Push(two-one);
         break;
        case '*':s.Push(two*one);
         break;
        case '/':s.Push(two/one);
         break;
        default:
         return -1;
        }

       }
      }
      else
       return -1;
      ++tChar;
     }
     //结果
     *tResult = s.Top();
     s.Pop();
     return 1;
    }

    main函数中调用与前面一样。。。不过这次用到了链栈。。。

  • 相关阅读:
    oracl (一)数据类型
    orcl (二)函数
    数据库锁机制
    Jquery逐行读取txt 文件
    PowerShell导出场中的WSP包到本地
    如何安装Magento 2.0
    WindowsServer2012 R2 64位中文标准版(IIS8.5)下手动搭建PHP环境详细图文教程(二)安装IIS8.5
    WindowsServer2012 R2 64位中文标准版(IIS8.5)下手动搭建PHP环境详细图文教程(一)
    IQueryable 和 IEnumerable
    asp.net读取CSV
  • 原文地址:https://www.cnblogs.com/ccmfc/p/1723293.html
Copyright © 2011-2022 走看看