当前位置: 首页 > news >正文

装饰公司315活动网站怎么做南宁做网站优化

装饰公司315活动网站怎么做,南宁做网站优化,如何建立一个个人网站,抖音代运营比较有名的公司前言#xff1a;四则运算#xff0c;大家都不陌生#xff0c;在上小学的时候#xff0c;数学中学到过的知识#xff0c;那么如何在程序中实现呢#xff1f;下面#xff0c;我们就用程序来实现9(3-2)*(5-3)/4*3#xff0c;这个算式的值。计算的时候#xff0c;有一个规…前言四则运算大家都不陌生在上小学的时候数学中学到过的知识那么如何在程序中实现呢下面我们就用程序来实现9(3-2)*(5-3)/4*3这个算式的值。计算的时候有一个规则”先乘除后加减从左到右先括号内后括号外“。 其优先级就是 加减乘除括号 这个算式我们可以很轻松的计算出它的值等于10.5。这是我们常用的四则表达式又叫做中缀表达式。这种计算的复杂之处在与乘除在加减之后并且还有括号放在程序里的判断就复杂了那么如何简化呢伟大的科学家想到了好的处理办法 一、逆波兰Reverse Polish NotationRPN一种不需要括号的后缀表达法我们也称之为逆波兰。 上面的四则运算表达式转换未后缀表达法之后变为 9 3 2 - * 5 3 - 4 / 3 * 叫后缀的原因所有的符号都是在要运算数字的后面出现。 如何实现由中缀表达式转化未后缀表达式呢 规则依次从左向右遍历表达式若是数字加入到集合若是符号则需要判断其与栈顶符号的优先级如果当前元素是右括号或优先级较低的符号则栈顶的元素一次出栈并输出并将当前符号进栈如果当前元素和栈顶的元素优先级相同将栈顶的同级元素依次出栈。 实现代码 /// summary /// 利用正则表达式分别获取数字和符号然后组装到集合中。 /// /summary /// param namestr/param /// returns/returns private Liststring GetOpList(string str) {string pattern (\d);Regex validate new Regex(pattern);MatchCollection col validate.Matches(str);//string patternFh ((\|\-|\*|\/|\(|\)));string patternFh \D;Regex validateFh new Regex(patternFh);MatchCollection colFh validateFh.Matches(str);Liststring list new Liststring();int nFhIndex 0;for (int i 0; i col.Count; i){Match mD col[i];list.Add(mD.Value);if (nFhIndex colFh.Count){Match mf colFh[nFhIndex];string strTemp mf.Value;int nTempLen strTemp.Length;for(int j 0; j nTempLen; j){list.Add(strTemp.Substring(j, 1));}nFhIndex;}}return list; }/// summary /// 当前只限定加减乘除小括号 /// /summary /// param namestr/param /// returns/returns private Liststring GetNextPrevRegex(string str) {string hig */; //优先级高的string zkh (; //左括号string ykh ); //右括号Stack stack new Stack();Liststring list new Liststring();Liststring listOp GetOpList(str);//从左到右遍历中缀表达式的每个数字和符号for (int i 0; i listOp.Count; i){string item listOp[i];//1、若是数字输出即成为后缀表达式的一部分if (IsNumeric(item)){list.Add(item);continue;}if (stack.Count 0 || zkh item){stack.Push(item);continue;}//这里限定了默认条件是必须-*/)才到这里。while (stack.Count 0){string ab stack.Peek().ToString();if (ykh item){if (zkh ab){stack.Pop(); //将左括号出栈break;}list.Add(stack.Pop().ToString());continue;}if (!hig.Contains(ab))break;list.Add(stack.Pop().ToString());}if (!ykh.Contains(item))stack.Push(item);}while (stack.Count 0){list.Add(stack.Pop().ToString());}return list; }private bool IsNumeric(string token) {bool blag true;string pattern (^\d$);Regex validate new Regex(pattern);if (!validate.IsMatch(token)){blag false;}return blag; } 二、由上面计算得到后缀表达式那么如何使用栈来计算这个表达式呢 计算规则依次遍历后缀表达式如果是数字则入栈如果是符号则将栈顶的两个元素出栈进行计算计算完成之后将结果入栈。 代码如下 public double GetResult(string calc) {Liststring list GetNextPrevRegex(calc);Stack calcStack new Stack();foreach (var item in list){string temp item.ToString();//如果是数字入栈if (IsNumeric(temp)){calcStack.Push(temp);continue;}//如果是符号则把栈顶的两个数字出栈进行计算入栈。double.TryParse(calcStack.Pop().ToString(), out double hz2);double.TryParse(calcStack.Pop().ToString(), out double hz1);double result GetResultByFh(hz1, hz2, temp);calcStack.Push(result);}string sResult calcStack.Pop().ToString();double.TryParse(sResult, out double calcresult);return calcresult; } private double GetResultByFh(double ca1, double ca2, string fh) {if (fh )return ca1 ca2;else if (fh -)return ca1 - ca2;else if (fh *)return ca1 * ca2;elsereturn ca1 / ca2; } 备注其中逆波兰解释来自《大话数据结构》一书。 欢迎大家批评指正小可不胜感激。
http://www.pierceye.com/news/652262/

相关文章:

  • 广东省城乡建设厅投诉网站首页wordpress posts
  • 泰安建设厅网站怎样给公司做一个网站
  • 扶贫网站开发的目的是什么2023年舆情分析报告
  • 河南建设银行处理违章网站网站做支付需要准备什么东西吗
  • 网站设置不能通过链接访问比较好的源码网站
  • 深圳做网站联雅空间业务建设网站
  • 合肥企业网站设计制作莱芜杂谈 莱芜话题
  • 大圣网站建设为什么不推荐大家去外包公司
  • 做网站手机版wordpress如何换成经典编辑器
  • 建设网站的知识企业做网站设计的
  • 西安网站排名分析软文营销把什么放在第一位
  • 织梦手机网站模板删除不了宁波网站建设服务商
  • 深圳网站建设最专业网站seo技术
  • 定制网站开发一般多少钱郑州哪家公司做网站好
  • jsp做的网站效果给你一个网站你怎么做的吗
  • 怎样做网站海报wordpress最近怎么又是5.0更新
  • 淡水网站建设哪家便宜设计网页分析
  • 长沙多迪php网站开发培训学校小说榜单首页百度搜索风云榜
  • 门户网站建设计入什么科目网站备案 时间更新
  • 企业建网站租用服务器好还是买一个好wordpress 预订插件
  • 电气建设网站下载的asp网站怎么打开
  • 南阳网站建设icp备手机应用商店免费下载
  • 网站开发测量像素工具网站模板包含哪些内容
  • 南昌网站排名优化费用湖北公众号定制开发
  • 个人主页自助建站凡科网干嘛的
  • 网站后台上传图片不显示品牌营销咨询公司
  • 卖房网站母亲节做什麽活动从传播的角度
  • 永久免费的cad软件seo咨询
  • 网站邮件功能设计理论网站排名软件包年
  • wordpress语言文件编辑专业的企业网站优化公司