实数带小数点的四则运算计算器

学习是我快乐

发布日期: 2020-05-27 09:30:20 浏览量: 133
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、实验目的和要求

  • 掌握C#的基本语法

  • 了解Windows窗体和基本控件的使用

  • 掌握选择结构的特点和使用方法

  • 掌握字符串String类的声明和使用

二、实验内容和原理

  • 学会分析“简易计算器”任务的实现思路

  • 根据思路独立完成“简易计算器”的源代码编写、编译和运行

  • 掌握正则表达式来判定数字键或者数据是否合法

  • 掌握String类常用方法的使用

项目流程图

三、实验环境

  • 硬件:PC机

  • 软件:windows10、VS2017

四、算法描述及实验步骤

4.1 实验步骤

  • 打开vs2017,创建新项目(.NET Framework),并命名为计算器

  • 定义类Form1,完成组件的布局,以及事件处理方法

  • 编译和测试程序,并查看运行结果

4.2 算法描述

  • 输入合法机制

    • 避免第一位为符号,设置判断当第一位按非数字使不处理
    • 当第一位为零,第二位也为零,设置判断当第一位为零时输入数字无效(即0000.0)
    • 避免输出数字不合法(多个小数点 即6.6.6),利用循环以符号位为分割线,判该数字是否存在已存在小数点,即每个运算符号后的数字至多存在一个小数点
    • 排除多符号一起串连(即8+*9+6*/5)
    • 点击运算符触发事件并判断前一位是否为符号,是则不做处理
  • 计算字符串

    • 判断最后一位是否为运算符,利用String类中的Last()方法提取最后一位进行判断,是则提示错误,否则运算
    • 字符和数字分离,两次利用Split()类进行字符串提取分析分别得到数字序列和运算符序列
    • 将数字序列和运算符序列存放在两个动态数组中,动态数组的删除较为便利
    • 根据优先级计算,设置两个循环(当符号链表中的数据不为空则继续),第一个循环计算所有得乘除,即符号前后得两个数乘除,结果放在第一个数中删除第一个数和删除符号;第二个循环计算所有的加减,结果放在第一个数中删除第一个数和删除符号

五、调试过程

5.1 问题

Split(new char[]);中没有去除空元素

运算结果错误

5.2 解决

  • 添加参数 Split(new char[],StringSplitOptions.RemoveEmptyEntries);去除空元素

  • 程序只删除一个运算后的数,导致算法错误,如该图结果由:5*6-6/9

5.3 更正结果

六、实验结果

实验结果

验证结果

七、总结

通过这个实验,我了解到了数组、字符串、动态数组的常用方法,在实验过程中遇到的问题学会自己去解决,在思路方法行不通时,学会转变另一种方法去解决,如在动态数组中的GetRange(int i,int count)从第i个获取count长度的数组集合,当我count=1时,获取的第i个字符,利用toString()、Trim()方法后使用Equel(),任何条件其值都是false,最后通过将GetRange获取的字符存在byte类型中用“==”匹配器ASCII码。

上传的附件 cloud_download 计算器.rar ( 208.50kb, 9次下载 )

发送私信

43
文章数
9
评论数
最近文章
eject