创建一个程序,能够实现自然数的四则运算(+-*/),要求:
输入一个字符串表示的自然数四则运算表达式,表达式中没有括号;
计算该表达式的值,并输出.初学者...刚才的帖子太乱了...
我现在遇到的问题1string a= Console.ReadLine()
在屏幕接受..怎么实现数字和预算符分离

解决方案 »

  1.   

    能够实现类似:  y = 6 + (8*5) + sinPI + tane等运行,并用括号"()"区分优先级:
    http://www.cnitblog.com/Files/ChengKing/多功能计算器.rar
      

  2.   

    请参考:
    http://www.codeproject.com/csharp/ExpressionEvaluator.asp
      

  3.   

    string str = "123+456-789";
    string pattern = @"(\d+)";
    Regex r;
    MatchCollection number;
    MatchCollection Operator;
    r = new Regex(pattern);
    number = r.Matches(str);
    pattern = @"([+-*/]{1})";
    r = new Regex(pattern);
    Operator = r.Matches(str);
    number 中是所有数字
    Operator 中是所有操作符
      

  4.   

    使用脚本计算器,
    http://blog.csdn.net/zhzuo/archive/2004/04/26/22031.aspx
      

  5.   

    函数一,计算乘除法,实现。
    读取字符串,找到第一个运算符(只有乘除符号,否则抛异常)和运算符两边的数(用Split很容易能找到),将这一块计算完毕替换进去。递归调用本函数,直到里面没有运算符为止。函数二,找到第一个加减运算符和运算符两边的部分(包含乘除符号)利用函数一计算两边的部分,然后执行加减运算,替换进去。递归调用本函数,直到里面没有运算符为止。如果你想思路更清晰,把乘除加减做成四个函数也行。关键是优先级怎么体现和递归计算。
      

  6.   

    问题
    用split怎么找到*2边的数?
    像 10+12*13+4
    用*分离 不是变成 10+12 13+4了?
      

  7.   

    先调用函数二,就会被拆分为:
    10 12*13 和 +
    然后逐个调用函数一,就会变为:
    10 146 和 +
    函数二把这一块算出来,变成:
    156+4
    然后函数二递归调用自己就算完了。你看看"10+12*13+4".Split('+','-')的结果就清楚了。