Ejemplo n.º 1
0
 public string Calculate()
 {
     try
     {
         int_stack = new My_Stack <double>();
         List <string> calculate_text = new List <string>();
         calculate_text = polish_text.Split(' ').ToList();
         foreach (string x in calculate_text)
         {
             if (x == " " || x == "")
             {
                 continue;
             }
             foreach (var v in operators)
             {
                 if (v.name == x)
                 {
                     int_stack.push(v.Calculate(ref int_stack));
                     goto end2;
                 }
             }
             int_stack.push(Convert.ToDouble(x));
             end2 :;
         }
         return(Convert.ToString(int_stack.last()));
     }
     catch
     {
         return(text);
     }
 }
Ejemplo n.º 2
0
 private void AddOp(string op)
 {
     if (string_stack.is_empty())
     {
         string_stack.push(op);
     }
     else
     {
         string chr = string_stack.last();
         while (charPriority(chr) >= charPriority(op))
         {
             polish_text = (polish_text + " " + chr + " ");
             string_stack.pop();
             if (string_stack.is_empty())
             {
                 break;
             }
             chr = string_stack.last();
         }
         string_stack.push(op);
     }
 }