数据结构实验预习报告——算术表达式求解

一、问题描述和基本要求

【问题描述】
设计一个简单的算术表达式计算器。
【基本要求】
 实现标准整数类型的四则运算表达式的求(包含括号,可多层嵌入).
【测试数据】
30+2*70)/3-12*3
 5+
9*62-37+15*6
 
要求自行设计非法表达式,进行程序测试,以保证程序的稳定运行。
【实现提示】
可以设计以下辅助函数
static isNumberchar ReadInChar);  //ReadInchar 是否是数字而返回 TRUE FALSE
int TurnToIntegerchar IntChar)   // 将字符’0’.’9转换为整数 9

二、问题分析和任务定义

问题的分析:

本次实验的核心问题就是在于计算顺序的问题,如何让我们的程序去按照正确的顺序来计算一个简单的算术表达式。

1.运算顺序思想:首先我们知道符号运算顺序,即括号优先,其次乘除,再者加减,同级从左到右;

2.从左到右阅读运算:举个例子【2*3+4-2*(5+6)/4】从向右读取,分别读到“2”,“*”,“3”,这时已经已经有一个算术表达式了,即【2*3】,这时我们要根据之后的符号要判断我们是否要计算这个表达式,并且进行其他的操作;

3.符号运算顺序规则:

(1)读取到括号时将括号内内容优先计算出来,然后取代原括号运算式的位置;

(2)读取到运算符时比较其与紧接的前后两个运算符的优先级,若均优先,进行计算,否则进行搁置; 

(3)读取到‘#’时若其紧接的前面的算术运算符为‘#’则表示结束,否则对前接符号进行出栈运算;

(4)读取到‘+’,‘-’,若其前接运算符为‘#’则搁置入栈,否则将其前接符号弹出运算;

(5)读取到’x’,’/’,若其前接运算符为‘x’或’/'则将其前接符号进行出栈运算,否则搁置入栈;

(6)读取到‘(’进行直接进行搁置入栈;

(7)读取到‘)’,若其前接符号为‘(’则将两个符号都销毁。否则将其前接符号出栈运算。

三、逻辑设计

1.变量的类型说明

Main类进行算术表达式的计算和交互页面的设计
stack栈堆类存储数字或者字符

2.函数说明

math(char a,int b,int c)基础计算函数
preemption(char a,char b)优先权比较函数
isNumber(char ReadInChar)检查字符是否为数字
main(String[] args)主函数用于界面设计和各种函数调用

四、物理设计

int math(char a, int b, int c){}
int preemption(char a, char b){}
boolean isNumber(char ReadInChar){}
main(String[] args){} 

class Stack(堆栈类 构造方法(类型,大小)类型通过D与C来决定是double型还是char}

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值