这一节把字符串变为操作数,操作符,然后按优先级顺序,一步一步自动计算出结果,即,先内层括号计算,后外层,先乘除,后加减。

首先,制定规则,看完程序就明白:

a,如果是操作符,textBox1.Text += "\r\n" + "+" + "\r\n";

b,如果是操作数,   textBox1.Text += "3";

其次,通过"\r\n"分割符拆分到  string[] lines ,代码如下:

char[] separator = { '\r', '\n' };
            string[] lines = textBox1.Text.Split(separator);

for (int i = 0; i < lines.Length; i++)
            {
                if ("" == lines[i]) continue;
                string temp2 = lines[i];
                lineslist观察.Add(temp2);
            }

最后,调用括号优先级处理递归算法,这个算法在此做了调整,加入了运算,从内到外,逐层去掉了两个?,函数的参数也不再是字符串,而是 lineslist观察(List<string> tempstr)。代码如下:

List<string> lineslist观察 = new List<string>();

public void 括号递归处理(ref   List<string> tempstr)
       {
           List<string> subpstr1 = new List<string>();
           for (int n = 0; n < tempstr.Count; n++)//*****
           {
               
               subpstr1.Add(tempstr[n]);//需要测试1//测试ok
              
               if (tempstr[n] == "(")
               {
                   //截取字符串,调用自己
                  // string subpstr = tempstr.Substring(n + 1, tempstr.Length - n - 1);
                  // string subpstr1 = tempstr.Substring(0, n) + "?";//翻译完成,需要测试1,2
                   subpstr1.RemoveAt(n); subpstr1.Insert(n, "?");

List<string> subpstr = new List<string>();
                   for (int i = n + 1; i < tempstr.Count; i++)
                   {
                       subpstr.Add(tempstr[i]);//需要测试2//测试ok
                   }
                   括号递归处理(ref subpstr);
                   for (int i = 0; i < subpstr.Count; i++)
                   {
                       if (subpstr[i] == ")")
                       {

//char[] tempchar = subpstr.ToCharArray(); 
                           //需要测试3,先验证递归    //测试ok                    
                           //tempchar[i] = '?';
                           subpstr.RemoveAt(i); subpstr.Insert(i, "?");
                           //可以调用加减乘除函数了
                           List<string> temp = new List<string>();
                           for (int t = 0; t < i; t++)
                           {
                               temp.Add(subpstr[t]); //subpstr.RemoveAt(0);
                           }
                           try { 加减乘除(ref temp); }
                           catch (Exception e) { }
                           for (int t = 0; t < i; t++)
                           {
                               subpstr.RemoveAt(0);
                           }
                           subpstr.RemoveAt(0);
                           subpstr.Insert(0, temp[0]);
                           //string char2str = "";
                           //for (int i1 = 0; i1 < tempchar.Length; i1++)
                           //{
                           //    char2str += tempchar[i1];
                           //}
                           //tempstr = subpstr1 + char2str;
                           tempstr.Clear();
                           subpstr1.RemoveAt(subpstr1.Count - 1);
                           tempstr.AddRange(subpstr1);
                           tempstr.AddRange(subpstr);
                           i = subpstr.Count;
                       }

}
               }
           }
       }

注,加减乘除函数下一节解释,一次搞定一个问题,短小精悍。

待续(慢慢来!...........)每天一点小改变☺

我的邮箱liuganggang_1978@163.com;734523623@qq.com

写给父亲的语音计算器(‘(‘‘)‘算法参与运算c#,二)相关推荐

  1. 写给父亲的语音计算器(位图的加载,忽然领悟了资源编译器的加载c#,五)

    用小画家制作了,加,减,乘,除,0,1,2,3,4,5,6,7,8,9,=,(,)等,手绘的,48*48位图,保存为.bmp形式. 加载是这样的,好像抄写连连看程序时,抄过,直接上代码: string ...

  2. 写给父亲的语音计算器(加减乘除的处理C#,三)

    曾给孩子写了一个计算器把我累坏了,四个操作数,三个操作符,只有加减乘除四则运算,我的个神,三个操作符一共4*4*4=64种组合,这样写计算器,没完没了,今天写给父亲的语音计算器终于突破了.上代码: p ...

  3. 写给父亲的语音计算器(语音的加载播放C#,四)

    前面我们展示过语音识别时,语音片段的制作,保存,加载,那么加载后只有波形,如何播放出来?看代码: 首先,加载保存的.mch波形文件: string curFileName = "d:\\加. ...

  4. AliCloudDenoise 语音增强算法:助力实时会议系统进入超清音质时代

    简介:近些年,随着实时通信技术的发展,在线会议逐渐成为人们工作中不可或缺的重要办公工具,据不完全统计,线上会议中约有 75% 为纯语音会议,即无需开启摄像头和屏幕共享功能,此时会议中的语音质量和清晰度 ...

  5. C语言写的一个简单的计算器

    大学的第一学期就这样结束了.前阵子临近放假,不知道该干嘛,就分别用java和C语言写了两个东西.java写了个文件查找的程序.C语言写了个简易的计算器.至于为什么写计算器~因为刚学C语言的时候,还没摸 ...

  6. 语音增强算法的概述[转]

    选自:http://www.cnblogs.com/chunge2050/p/3159158.html 本课题隶属于学校的创新性课题研究项目.2012年就已经做完了,今天一并拿来发表. 目录: --基 ...

  7. 基于51单片机和四位数码管的智能计算器算法

    前段时间,本人写了基于51单片机和四位数码管的智能计算器算法,由于时间关系,算法没能实现小数部分,但已为小数部分留出空间,有兴趣的可以添加进去 下面是源代码(矩阵键盘的检测部分参考了普中科技的实验例程 ...

  8. html在线压缩tar.gz源码,c50_melp.tar.gz美国2400语音压缩编码算法,文件…

    资源下载 下载价格:5 积分 VIP优惠:免费请先登录 文件说明: C50_melp.tar.gz为美军2400bps语音压缩编码算法,该压缩文件是算法在TI的TMS320V5X芯片上的实时实现算法. ...

  9. C# 控制台语音计算器

    记得上高中时,给人当会计,帮忙结算月度工资:用的就是带语音功能的计算器! 当时用起来倍儿爽,于是速度加倍,效率加速:结果让老板赔了不少钱! 就是因为这个,才对语音计算器有了深刻印象!可能是这货坑了我! ...

  10. 【PowerShell语音计算器】

    [PowerShell语音计算器] 带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持多种数值转人民币 大写,如:123.4--->壹佰贰拾叁点肆圆. 版本号 1.51 下载: http:/ ...

最新文章

  1. LeetCode——二叉树序列化与反序列化
  2. [HDOJ4027]Can you answer these queries?(线段树,特殊成段更新,成段查询)
  3. ROS入门 小乌龟跟随示例
  4. 对类型“H12.MainWindow”的构造函数执行符合指定的绑定约束的调用时引发了异常。
  5. java array to list iterator_Iterator to list的三种方法
  6. JavaScript简单计算器
  7. 三星香港 android8.0,三星A8 Star官方港版安卓8.0固件刷机包:TGY-G8850ZHS3ASD1
  8. 华为鸿蒙专属文件后缀,华为鸿蒙——上传第三方APP【原理公布】
  9. 基于vue3.0的ionic中文开发文档
  10. VMware ESXi定制版(OEM ISO)资源下载(包含5.1\5.5\6.0)
  11. 爬虫---高性能爬虫
  12. 论文阅读:Social Media and Fake News in the 2016 Election
  13. STL之字符串类模板 string(一)、C++ string类库简介
  14. 手机储存卡数据怎么恢复
  15. Axure 9 修改默认字体
  16. NVIDIA显卡硬件技术交流整理
  17. 如何使用ffmpeg分离视频和音频t
  18. 吴恩达深度学习编程作业 part 2-2
  19. Android性能优化——图片压缩的终极选择libjpeg-turbo
  20. PHP:时间戳time和日期格式字符串转换date

热门文章

  1. android自定义view星空,自定义RecyclerView星空列表「多item且互相交错,自定义列表,ViewGroup级」...
  2. windows批量部署
  3. Ubuntu实时监控网速、CPU、内存
  4. 流量高峰时期的性能瓶颈有哪些、以及如何来解决
  5. mssql数据库和Oracle数据库注入
  6. HttpClient发送请求时动态替换目标ip
  7. TYVJ1356(腾讯大战360)
  8. vue截取一个字符串_字符串截取方法
  9. python化学模拟_rdkit 化学反应高级功能
  10. python的logo的代码_简单几步,100行代码用Python画一个蝙蝠侠的logo