自动将括号随机添加到数学运算字符串中?

时间:2012-05-14 12:34:09

标签: math

您是否有任何想法自动随机地添加括号到数学运算字符串?

例如。

给定的操作字符串:

57 x 40 - 14 + 84÷19

我需要在上面的字符串中随机自动添加括号。

所以它变成了:

(57 x 40) - 14 +(84÷19)或

(57 x 40) - (14 + 84÷19)或

57 x(40 - 14)+(84÷19)或

57 x(40 - 14 + 84÷19)或

57 x(40 - (14 + 84)÷19)

真的很感激帮助!!

米克,

2 个答案:

答案 0 :(得分:1)

我假设了三件事:

  1. 数字和运算符之间始终存在空格字符
  2. 所有数字都是整数(您可以轻松将其更改为其他类型)
  3. 非数字的一切都是运营商
  4. C#中的示例:

    Math m = new Math(); 
    string p = m.DoStuff("57 x 40 - 14 + 84 ÷ 19");
    Console.WriteLine(p);
    
    class Math
    {       
        internal string DoStuff(string p)
        {
            bool isParOpen = false;
            Random rnd = new Random();
            StringBuilder result = new StringBuilder();
            int i;
    
            string[] stack = p.Split(' ');
            foreach (var item in stack)
            {
                if (int.TryParse(item, out i))
                {
                    if (rnd.Next(2) == 1)
                    {
                        result.Append(isParOpen ? string.Format("{0}) ", item) : string.Format("({0} ", item));
                        isParOpen = !isParOpen;
                    }
                    else
                    {
                        result.Append(item).Append(" ");
                    }
                }
                else
                {
                    result.Append(item).Append(" ");
                }
            }
    
            if (isParOpen)
            {
                result.Append(")");
            }
    
            return result.ToString();
        }
    }
    

答案 1 :(得分:0)

如果您将数学表达式作为字符串处理,则可以随机添加括号(例如add random chars to a string),然后using an script engine, you can evaluate the expresion