四则运算表达式总结

四则运算表达式总结

  这两周完成了第一个个人项目--四则运算表达式。在整个开发的过程中我有一些收获也发现了自身的一些问题。下面就分条简述一下。


完成情况

  1、实现随机生成任意长度的四则表达式(+、-、*、/、括号)。

  2、实现四则表达式的计算(包括分数)。

  3、实现接收用户对某四则运算表达式计算的结果并判断正确性。

  4、实现结合1、2、3功能的MFC应用程序


总结

  整个的设计与实现过程中,收获颇多。首先就是我发现在实现之前能够有一个比较良好的设计思路以及程序流程的重要性(最好是能够记录下来而不是存在于脑海中的)。具体能够反映上述情况的有如下两个方面:我在第一周实现的是控制台的程序,在第二周才完成了移植到MFC上的工作,在实现控制台程序之前我对程序整体的设计有一个比较具体的构思,所以最后实现出来的程序的代码结构我自认为还是比较良好的,然后在第二周移植到MFC的过程中,在事先我没有很具体的想程序的实现结构,而是只有一个大概的结构。这就导致了我在编写程序的过程中不断的发现问题,然后就调整实现的过程,这样就使我最后MFC程序的代码结构以及函数调用之间的关系比较混乱,说实话有一些时候我也不是第一时间就能看懂我写的代码;第二一点就是,由于我在第一周早些时候就已经完成了控制台程序的编写,而在第二周晚些时候才开始做MFC程序。在写MFC的过程中又涉及到修改之前的函数实现(char转cstring),然后我就有点看不懂之前写的码了,所以深刻感觉到这时候如果有能够记录下来的设计思路是多么重要。第二个收获就是在程序实现的最开始一定要有一个目标,要对未来程序的扩展有预先的设想,并能够留下充足的接口以备日后进行修改。我在写控制台程序时就没有考虑到这重情况,导致后面在实现MFC时修改了很多代码以适应MFC,所以我从中了解到在事先将事情考虑的长远一些事多么重要。

时间: 2024-10-09 20:58:38

四则运算表达式总结的相关文章

四则运算表达式求值 OpenJ_Bailian - 4132

四则运算表达式求值 OpenJ_Bailian - 4132 题意:设计一个计算器,实现+-*/以及()的表达式运算求值. 栈的应用,这学期学数据结构,手写了栈练一下~ 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn=10010; //最大表达式长度 4 5 template <typename T> 6 class Stack; 7 8 template <typename T> 9

四则运算表达式求值の各种心碎

实验三---四则运算表达式求值 一.基本要求: ( 1 ) 利用二叉树后序遍历来实现表达式的转换,同时可以使用实验三的结果来求解后缀表达式的值. ( 2) 输入输出格式: 输入格式:在字符界面上输入一个中缀表达式,回车表示结束. 请输入表达式: 输入一个中缀表达式 输出格式:如果该中缀表达式正确,那么在字符界面上输出其后缀表达式,其中后 缀表达式中两相邻操作数之间利用空格隔开:如果不正确,在字符界面上输出表达式错误提示. 逆波兰表达式为: 输出逆波兰表达式 运算结果为:输出运算后的结果 测试数据

计算四则运算表达式(Java语言实现)

计算四则运算表达式主要是分两步运算  第一步是把 中缀表达式 转换成 后缀表达式.参考大一下期学的 <数据结构与算法分析--C语言描述>3.3.3 教材,完成下列代码: static String mid_to_suf(String str){ Stack<Character> s = new Stack<Character>(); String suf = new String(); HashMap<Character, Integer> map = ne

数据结构(7)----栈与队列之栈的应用四则运算表达式求值

栈与队列之栈的应用四则运算表达式求值 栈在四则运算表达式求值的应用为逆波兰表达式(后缀表达式) 普通算式(中缀表达式):9 + (3 - 1) * 3 + 10 / 2     ---(1) 逆波兰表达式(后缀表达式):9 3 1 - 3 * + 10 2 /         ---(2) 1:逆波兰表达式的计算规则 从左到右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号,就将处于栈顶的两个数字出栈,进行运算,再把运算结果进栈,一直到最终获得结果.接下来我们以(2)式为例:

四则运算表达式解析和求值(支持括号、小数、小数正负号)

需求分析 四则运算表达式的解析和求值从概念上看是一个逻辑很清晰的过程. 遵循了左结合.优先级差异和括号可以提升优先级这三条规则. 实现思路 实际上只要遍历表达式,将小数和运算符分离到两个序列容器中,在遍历的过程中,考虑左结合和括号对优先级的影响,将相关信息和运算符记录在一起,然后在遍历结束后,按照优先顺序从高到底,从小数序列中拉取两个元素(可能是中间结果的二叉树,实际上小数是一种特例,是左右子树为空的解析完成的二叉树),并且把运算符的两棵子树指向两个元素,把这棵新树放回到小数容器中.不断重复这个

程序输出小学四则运算表达式,支持真分数四则运算

程序设计思路: 1.运算式的输出格式可以为 数字 运算符 数字,也可以为 数字 运算符 数字 运算符 数字,还可以是更复杂的式子,在此只实现了2-3个数字的运算式. 2.将式子分为两类,第一类为20个,第二类为10个,分别用FOR循环控制输出. 3.第一类式子稍简单,只需通过随机函数将两个数字赋值,中间运算符通过数组下标的随机赋值实现随机性,再通过格式输出即可 4.此时还要考虑运算符为 ‘/’,并且除数为0的情况,这时用if语句设置条件排除即可 5.计算第一类式子结果可以参考计算器的功能代码,用

四则运算表达式网页版

在网页上面生成一个四则运算表达式,用户可以输入表达式的值,然后系统提示结果是否正确.这个网页程序比本机程序来说容易一点,一是因为表达式中运算符的个数不超过三个,表达式容易获得.还有就是javascript自带了一个计算表达式的值的函数,我们可以调用这个函数来完成对表达式值的计算. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% Str

Java四则运算表达式求解

压栈思想计算Java运算表达式 栈的规则是先进后出.利用压栈的思想来计算四则运算表达式是这样的:我们给定两个栈,一个用来存放数字.一个用来存放对应的操作符.假定我们有一个给定的四则运算表达式a+b+c/d*(e+f)-d*a,那我们先把这个表达式拆分成一个个的数字或者是运算符.或者就是括号了.然后我们从左至右遍历每一个元素,遍历过程中遵循步骤和原则如下: (1)遇到数字则直接压到数字栈顶. (2)遇到运算符(+-*/)时,若操作符栈为空,则直接放到操作符栈顶,否则,见(3). (3)若操作符栈顶

QT之计算器对四则运算表达式的解析

前面我们已经关于计算器介绍的已经够多了,那么它现在还是没有具备计算的功能. 今天我们来继续讲解计算器的解析算法,那么对于一个四则运算表达式, 它是如何读懂的呢?比如:"+9.11 + ( -3 - 1 ) * -5 ": 人类习惯的数学表达式叫做中缀表达式,还有一种将运算符放在数字后面的后缀表达式, 比如:5 + 3 ==> 5 3 +: 1 + 2 * 3 ==> 1 2 3 * +;像这种就是后缀表达式. 那么中缀表达式是符合人类的阅读和思维习惯,后缀表达式则符合计算机