国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

實現四則混合運算的代碼

2024-07-21 02:26:09
字體:
來源:轉載
供稿:網友

這是一個實現四則混合運算的代碼,包括三個方法,調用時,使用compute()方法即可,這個方法可以用于動態計算。
 
代碼:
         string precede(string p, string q)
       {
           switch(p)
           {
              case "+":
              case "-":
                  return ("*/(".indexof(q) != -1) ? "<":">";
              case "*":
              case "/":
                  return (q == "(") ? "<":">";
              case "(":
                  return (q == ")") ? "=":"<";
              case ")":
                  return (q == "(") ? "?":">";
              case "#":
                  return (q == "#") ? "=":"<";
           }
           return "?";
       }
 
       double operate(double a, char o, double b)
       {
           switch(o)
           {
              case '+':
                  return a + b;
              case '-':
                  return a - b;
              case '*':
                  return a * b;
              case '/':
                  return a / b;
           }
           return 0;
       }
 
       object compute(string expression)
       {
           stack narr = new stack(), oarr = new stack();
           int j = 0;
           double a = 0, b = 0;
           string w = "";
           char o;
           matchcollection arr = regex.matches(expression.replace(" ", "") + "#", @"(((?<=(^|/())-)?/d+(/./d+)?|/d)");
 
           oarr.push("#");
           w = convert.tostring(arr[j++]);
           while(!(w == "#" && convert.tostring(oarr.peek()) == "#"))
           {
              if("+-*/()#".indexof(w) != -1)
              {
                  switch(precede(oarr.peek().tostring(), w))
                  {
                     case "<":
                         oarr.push(w);
                         w = convert.tostring(arr[j++]);
                         break;
                     case "=":
                         oarr.pop();
                         w = convert.tostring(arr[j++]);
                         break;
                     case ">":
                         o = convert.tochar(oarr.pop());
                         b = convert.todouble(narr.pop());
                         a = convert.todouble(narr.pop());
                         narr.push(operate(a, o, b));
                         break;
                     default:
                         return "計算出錯!";   
                  }
              }
              else
               {
                  narr.push(w);
                  w = convert.tostring(arr[j++]);
              }
           }
           return narr.pop();
       }


 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲阜市| 青冈县| 永新县| 福州市| 平南县| 福贡县| 南宁市| 大连市| 自治县| 绥中县| 日土县| 景东| 嘉兴市| 遂昌县| 池州市| 泊头市| 开远市| 平原县| 高淳县| 临泽县| 常熟市| 洛南县| 灌南县| 五莲县| 高陵县| 长汀县| 黑水县| 澎湖县| 塔城市| 股票| 蓝山县| 屯昌县| 诸暨市| 金昌市| 滨州市| 广灵县| 旌德县| 东明县| 乐清市| 岳池县| 类乌齐县|