C# 计算器编程
最近在编写一个计算器程序但是呢想了好久网上的代码大概是符号是符号的switch选择其余的是其余的选择也就是确定优先级的选择我现在突然想到本来语言自身不就有一定的逻辑先后吗...
最近在编写一个计算器程序 但是呢 想了好久 网上的代码大概是 符号是符号的switch选择 其余的是其余的选择 也就是 确定优先级的选择 我 现在 突然想到 本来语言自身不就有一定的逻辑先后吗 根本就不用我们去做吧! 好比 我把显示框里的字符串“1+2X3+4/2”这个能不能直接转换成计算器可以接受的形式呢???相当于在等号按键那给个处理???不知道哪个高手能给点意见 本人第一次编程 虚心请教!
展开
1个回答
展开全部
这个就要用到编译器中对语法分析的原理:
你没有发现在编译器中这样的表达式是可以正确运算的吗?
要实现对表达式进行词法,语法分析是知道以下几点
1,要对数据结构了解,简单的计算器程序使用两个栈(数据结构中的栈)即可以实现。
2,复杂的计算器程序要使用到语法树(数据结构中的二叉树)来实现。
3,对词法分析和语法分析很了解。词法分析就是将你的表达式转换成一个一个的字符和数字,语法分析就是将表达式转换成语法树。
4,对表达式的前缀,中缀,后缀了解。 编译系统是总样来确定优先级的呢? 就是通过对中缀表达式转换成后缀表达式。 在后缀表达式中可以不用管表达式的优先级问题。
5,表达式的存储:即这个“1+2X3+4/2”表达式是以什么样的方法存储到内存中,如果是以字符串,那么在词法分析时,要总样将如 1 ,这个字符转换成数字型1,这也是一个问题。
6,在进行计算时,是否要先检查用户输入的表达式是否合法,最好有一些智能的判断,以免在用户输入时没有注意输入错误的表达式,这样你也给计算出结果来,这就会误导用户。
7,建议你先编写简单的计算器,像windows下的标准型计算器,它的优先级问题要求用户自己解决。 你想编写的这种计算器是高级计算器,难度不小。
你没有发现在编译器中这样的表达式是可以正确运算的吗?
要实现对表达式进行词法,语法分析是知道以下几点
1,要对数据结构了解,简单的计算器程序使用两个栈(数据结构中的栈)即可以实现。
2,复杂的计算器程序要使用到语法树(数据结构中的二叉树)来实现。
3,对词法分析和语法分析很了解。词法分析就是将你的表达式转换成一个一个的字符和数字,语法分析就是将表达式转换成语法树。
4,对表达式的前缀,中缀,后缀了解。 编译系统是总样来确定优先级的呢? 就是通过对中缀表达式转换成后缀表达式。 在后缀表达式中可以不用管表达式的优先级问题。
5,表达式的存储:即这个“1+2X3+4/2”表达式是以什么样的方法存储到内存中,如果是以字符串,那么在词法分析时,要总样将如 1 ,这个字符转换成数字型1,这也是一个问题。
6,在进行计算时,是否要先检查用户输入的表达式是否合法,最好有一些智能的判断,以免在用户输入时没有注意输入错误的表达式,这样你也给计算出结果来,这就会误导用户。
7,建议你先编写简单的计算器,像windows下的标准型计算器,它的优先级问题要求用户自己解决。 你想编写的这种计算器是高级计算器,难度不小。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询