创建一个程序,能够实现自然数的四则运算(+-*/),要求:
输入一个字符串表示的自然数四则运算表达式,表达式中没有括号;
计算该表达式的值,并输出.初学者...刚才的帖子太乱了...
我现在遇到的问题1string a= Console.ReadLine()
在屏幕接受..怎么实现数字和预算符分离
输入一个字符串表示的自然数四则运算表达式,表达式中没有括号;
计算该表达式的值,并输出.初学者...刚才的帖子太乱了...
我现在遇到的问题1string a= Console.ReadLine()
在屏幕接受..怎么实现数字和预算符分离
http://www.cnitblog.com/Files/ChengKing/多功能计算器.rar
http://www.codeproject.com/csharp/ExpressionEvaluator.asp
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 中是所有操作符
http://blog.csdn.net/zhzuo/archive/2004/04/26/22031.aspx
读取字符串,找到第一个运算符(只有乘除符号,否则抛异常)和运算符两边的数(用Split很容易能找到),将这一块计算完毕替换进去。递归调用本函数,直到里面没有运算符为止。函数二,找到第一个加减运算符和运算符两边的部分(包含乘除符号)利用函数一计算两边的部分,然后执行加减运算,替换进去。递归调用本函数,直到里面没有运算符为止。如果你想思路更清晰,把乘除加减做成四个函数也行。关键是优先级怎么体现和递归计算。
用split怎么找到*2边的数?
像 10+12*13+4
用*分离 不是变成 10+12 13+4了?
10 12*13 和 +
然后逐个调用函数一,就会变为:
10 146 和 +
函数二把这一块算出来,变成:
156+4
然后函数二递归调用自己就算完了。你看看"10+12*13+4".Split('+','-')的结果就清楚了。