我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 栈自动机 >

在屏幕上随意输入一个公式如:a+36abc-d 然后再赋值。怎样让程序

归档日期:07-02       文本归类:栈自动机      文章编辑:爱尚语录

  在屏幕上随意输入一个公式,如:a+36*a*bc-d ,然后再赋值。怎样让程序识别公式!(C、C++高手进!)

  在屏幕上随意输入一个公式,如:a+36*a*bc-d ,然后再赋值。怎样让程序识别公式!(C、C++高手进!)

  功能描述:程序运行后,你在屏幕上随意输入一个公式,然后程序输出公式中的变量,并且让你给每个变量赋值,回车后计算出这个多项式的结果.如果可以,最好让程序能够识别括号()、[]、...

  功能描述:程序运行后,你在屏幕上随意输入一个公式,然后程序输出公式中的变量,并且让你给每个变量赋值,回车后计算出这个多项式的结果.如果可以,最好让程序能够识别括号()、[]、{}中的一个或全部。

  用编译原理的词法语法分析的确可以解决,但是这样难度较大,也正是我要问的,他的具体思路是怎样的,能说详细点吗?

  问题的关键在于从屏幕输入的是一个个字符,而不是一个个相应的变量,所以无法给这些字符(字母)赋值,怎样才能把这些字母转换成变量,并且输入的多项式系统能够认识(即:知道这是一个表达式,可以计算,而不是一个字符串) 望高手指教,给出具体的伪代码为好(再加50分).展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  2、进行语法分析,生成表达式树。或者如果仅仅是计算表达式(而没有控制语句),也可以将表达式转为后缀表达式。

  3、对表达式树或者后缀表达式进行计算。采用递归或非递归方法均可(非递归需要额外的栈)。

  使用lex(词法分析代码生成工具)+yacc(语法分析代码生成工具),可以直接非常简单的生成代码。

  是的。但是这的确是只有通过词法和语法分析才能正确的解析字符串,将字符串转化为具有语法意义的“表达式”,这已经是很简单、很明确的方法了。使用其他方法也无非是词法分析和语法分析的另外一种算法,不从编译原理的角度去考虑这个问题,会让这个问题变得更复杂。

  最简单的办法就是,使用一个简单的有穷自动机做词法分析,然后使用一个栈转换为后缀表达式,然后还是用栈来计算该后缀表达式。这已经是最准确和最简单的方法。除非,你使用第三方的表达式解析库。

  语法错误: 1、 *** 是无意义的运算符;2、括号不匹配;3、9ab3c是错误的变量名字。

  就是你先识别出从屏幕输入的公式,分析每一个字符的含义(自己列出翻译表),然后再对每一种情况处理。

  展开全部《visual c++ 2008入门经典》上面有这个日子,你自己在网上找到这本书的电子版下来看看。

本文链接:http://mezzomagazine.com/zhanzidongji/129.html