【代码笔记】【c#】计算后缀表达式

6 篇文章 0 订阅
		/// <summary>
		/// 计算后缀表达式
		/// </summary>
		/// <param name="expression">后缀表达式</param>
		/// <returns></returns>
		public static double CalSu(String expression) 
		{
			string[] units = expression.Trim().Split(' ');
			Stack arguments = new Stack();

			foreach (string unit in units)
			{
				if (isNumberic(unit))
				{
					arguments.Push(double.Parse(unit));
				}
				else
				{
					double value = (double)arguments.Pop();

					switch (unit)
					{
						case "+":
							arguments.Push((double)arguments.Pop() + value);
							break;

						case "-":
							arguments.Push((double)arguments.Pop() - value);
							break;

						case "*":
							arguments.Push((double)arguments.Pop() * value);
							break;

						case "/":
							arguments.Push((double)arguments.Pop() / value);
							break;

						case "sin":
							arguments.Push(Math.Sin(value));
							break;

						case "cos":
							arguments.Push(Math.Cos(value));
							break;

						case "ln":
							arguments.Push(Math.Log(value));
							break;

						case "exp":
							arguments.Push(Math.Exp(value));
							break;

						case "sqrt":
							arguments.Push(Math.Sqrt(value));
							break;

						default:
							throw new ArgumentException("未知的符号" + unit);
					}
				}
			}

			if (arguments.Count != 1)
			{
				throw new ArgumentException("表达式不合法");
			}

			return (double)arguments.Pop();

		}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值