zoukankan      html  css  js  c++  java
  • 团队项目

    组 万德福同学的第一周反馈回来了:

      团队作业题目是做一个安卓计算器,而我的任务就是进行字符串的分析,我本该,说的简单点就是正确计算出一个表达式。

     上学期和许清老师学了编译原理,想到LL(1)文法,使用递归下降可以正确分析一段文法,看了两天后,突然想明白,我只要计算出结果,并不需要具体的分析过

    程比如消除做递归,消除回溯啊。再加上我的安卓基数只是入门,还是不写那么复杂的吧,于是挑了一个数据结构里简单的栈的操作进行计算,具体思路如下:

      1.输入一个表达式,存在字符数组里(Java里可以建数组,想用二叉树,但Java里没有指针)

      2.把这个表达式由中缀式转换为后缀式。中缀式改为后缀式优点:中缀式和后缀式的操作数出现的顺序是一样的,只是操作符顺序不一样,而且后缀是表达式无括号,在出入栈的时候我把(,),左右括号的优先级同其他符号进行比较后,直接出栈不保存。

      3.逐个读取后缀式(保存在一个数组里)的字符,如果是0~9,就一直读到下一位不是数字为止,把这几个数字转为整形数据入栈(数据栈),遇见操作符则连续出栈两个数,并用操作符进行运算。

    计算 结果自然也是一个数据,所以计算结果也要入栈。读后缀式一直读到’‘为止。

      4.最后,计算结果出栈,如果此时栈不空,则有错。

    具体代码在 https://git.coding.net/Wondove/wonderful5.git 中,最新的biao_da_shi文件中。

    测试人员的测试结果:

    基本合格

    不足&改进方向:对大数进行运算(七位以上);对角度进行运算;显示科学计数法等。

  • 相关阅读:
    LeetCode15 3Sum
    LeetCode10 Regular Expression Matching
    LeetCode20 Valid Parentheses
    LeetCode21 Merge Two Sorted Lists
    LeetCode13 Roman to Integer
    LeetCode12 Integer to Roman
    LeetCode11 Container With Most Water
    LeetCode19 Remove Nth Node From End of List
    LeetCode14 Longest Common Prefix
    LeetCode9 Palindrome Number
  • 原文地址:https://www.cnblogs.com/Seibertron/p/5405485.html
Copyright © 2011-2022 走看看