写给父亲的语音计算器(‘(‘‘)‘算法参与运算c#,二)
这一节把字符串变为操作数,操作符,然后按优先级顺序,一步一步自动计算出结果,即,先内层括号计算,后外层,先乘除,后加减。
首先,制定规则,看完程序就明白:
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#,二)相关推荐
- 写给父亲的语音计算器(位图的加载,忽然领悟了资源编译器的加载c#,五)
用小画家制作了,加,减,乘,除,0,1,2,3,4,5,6,7,8,9,=,(,)等,手绘的,48*48位图,保存为.bmp形式. 加载是这样的,好像抄写连连看程序时,抄过,直接上代码: string ...
- 写给父亲的语音计算器(加减乘除的处理C#,三)
曾给孩子写了一个计算器把我累坏了,四个操作数,三个操作符,只有加减乘除四则运算,我的个神,三个操作符一共4*4*4=64种组合,这样写计算器,没完没了,今天写给父亲的语音计算器终于突破了.上代码: p ...
- 写给父亲的语音计算器(语音的加载播放C#,四)
前面我们展示过语音识别时,语音片段的制作,保存,加载,那么加载后只有波形,如何播放出来?看代码: 首先,加载保存的.mch波形文件: string curFileName = "d:\\加. ...
- AliCloudDenoise 语音增强算法:助力实时会议系统进入超清音质时代
简介:近些年,随着实时通信技术的发展,在线会议逐渐成为人们工作中不可或缺的重要办公工具,据不完全统计,线上会议中约有 75% 为纯语音会议,即无需开启摄像头和屏幕共享功能,此时会议中的语音质量和清晰度 ...
- C语言写的一个简单的计算器
大学的第一学期就这样结束了.前阵子临近放假,不知道该干嘛,就分别用java和C语言写了两个东西.java写了个文件查找的程序.C语言写了个简易的计算器.至于为什么写计算器~因为刚学C语言的时候,还没摸 ...
- 语音增强算法的概述[转]
选自:http://www.cnblogs.com/chunge2050/p/3159158.html 本课题隶属于学校的创新性课题研究项目.2012年就已经做完了,今天一并拿来发表. 目录: --基 ...
- 基于51单片机和四位数码管的智能计算器算法
前段时间,本人写了基于51单片机和四位数码管的智能计算器算法,由于时间关系,算法没能实现小数部分,但已为小数部分留出空间,有兴趣的可以添加进去 下面是源代码(矩阵键盘的检测部分参考了普中科技的实验例程 ...
- html在线压缩tar.gz源码,c50_melp.tar.gz美国2400语音压缩编码算法,文件…
资源下载 下载价格:5 积分 VIP优惠:免费请先登录 文件说明: C50_melp.tar.gz为美军2400bps语音压缩编码算法,该压缩文件是算法在TI的TMS320V5X芯片上的实时实现算法. ...
- C# 控制台语音计算器
记得上高中时,给人当会计,帮忙结算月度工资:用的就是带语音功能的计算器! 当时用起来倍儿爽,于是速度加倍,效率加速:结果让老板赔了不少钱! 就是因为这个,才对语音计算器有了深刻印象!可能是这货坑了我! ...
- 【PowerShell语音计算器】
[PowerShell语音计算器] 带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持多种数值转人民币 大写,如:123.4--->壹佰贰拾叁点肆圆. 版本号 1.51 下载: http:/ ...
最新文章
- LeetCode——二叉树序列化与反序列化
- [HDOJ4027]Can you answer these queries?(线段树,特殊成段更新,成段查询)
- ROS入门 小乌龟跟随示例
- 对类型“H12.MainWindow”的构造函数执行符合指定的绑定约束的调用时引发了异常。
- java array to list iterator_Iterator to list的三种方法
- JavaScript简单计算器
- 三星香港 android8.0,三星A8 Star官方港版安卓8.0固件刷机包:TGY-G8850ZHS3ASD1
- 华为鸿蒙专属文件后缀,华为鸿蒙——上传第三方APP【原理公布】
- 基于vue3.0的ionic中文开发文档
- VMware ESXi定制版(OEM ISO)资源下载(包含5.1\5.5\6.0)
- 爬虫---高性能爬虫
- 论文阅读:Social Media and Fake News in the 2016 Election
- STL之字符串类模板 string(一)、C++ string类库简介
- 手机储存卡数据怎么恢复
- Axure 9 修改默认字体
- NVIDIA显卡硬件技术交流整理
- 如何使用ffmpeg分离视频和音频t
- 吴恩达深度学习编程作业 part 2-2
- Android性能优化——图片压缩的终极选择libjpeg-turbo
- PHP:时间戳time和日期格式字符串转换date
热门文章
- android自定义view星空,自定义RecyclerView星空列表「多item且互相交错,自定义列表,ViewGroup级」...
- windows批量部署
- Ubuntu实时监控网速、CPU、内存
- 流量高峰时期的性能瓶颈有哪些、以及如何来解决
- mssql数据库和Oracle数据库注入
- HttpClient发送请求时动态替换目标ip
- TYVJ1356(腾讯大战360)
- vue截取一个字符串_字符串截取方法
- python化学模拟_rdkit 化学反应高级功能
- python的logo的代码_简单几步,100行代码用Python画一个蝙蝠侠的logo