当前位置: 首页 > 后端技术 > Java

CSC172项目

时间:2023-04-01 17:41:19 Java

PROJECT1CSC172PROJECT1INFIXCALCULATOR1IntroductionThisprojectwillrequireyoutocreateaJavaprogramthatwilltakeainputfileconsistingofmathematicalexpressionsininfixnotation,convertthemtopostfixnotationusingtheshuntingyardalgorithm,andthenevaluatethepostfixexpression.然后计算结果将保存到输出文件中。该项目将使用您之前在实验室2调车场算法中实现的堆栈和队列该项目的第一部分涉及使用调车场算法以及您在实验室6中编写的堆栈和队列实现将中缀表达式转换为后缀。您应该不要使用Java库中的堆栈和队列类。每个中缀表达式可以包含以下数学运算符的任意组合:加法[+]、减法[-]、乘法[*]、除法[/]、括号[()]、小于[<]、大于[>]、等于lto[=],逻辑与[&],逻辑或[|],逻辑非[!]。当同时使用数学和逻辑运算符时,让“假”用0表示,“真”用1表示。可以支持以下附加运算符的程序可获得额外学分:求幂[^]、模[%]、正弦[sin]、余弦[cos]和切线[tan]。调车场算法通过考虑中缀表达式中的每个“标记”(操作数或运算符)并采取适当的操作来工作:如果标记是操作数,则将其入队。如果令牌是右括号[')'],弹出所有堆栈元素并将它们一个接一个地入队,直到找到左括号['(']。如果令牌是运算符,弹出堆栈中的每个令牌并将它们一个接一个地排入队列,直到到达优先级较低的运算符或优先级相同的右结合运算符(例如,逻辑NOT是右结合运算符)。将找到的最后一个运算符排入队列,然后推送原始运算符入栈。在输入结束时,弹出保留在栈中的每个标记,并将它们一个一个地添加到队列中。队列现在包含转换后的后缀表达式,可以传递到后缀计算器进行评估。后缀评估将后缀表达式存储在队列中后,下一步就是评估它。计算后缀表达式的算法如下进行:获取队列前端的令牌。如果令牌是操作数,则将其压入堆栈。如果令牌是运算符,则从堆栈中弹出适当数量的操作数(例如2个操作数用于乘法,1个用于逻辑非)。对弹出的操作数进行操作,并将结果值压入堆栈。重复步骤1-3,直到队列为空。如果是,堆栈中应该只有一个值——该值是表达式的结果。可交付对于这个项目,您将需要编写一个Java程序来实现ds在纯文本文件中的一系列中缀表达式中,将表达式转换为后缀表示法,计算后缀表达式,并将结果答案保存到新的文本文件中。您可以假设输入文件将包含可以安全地评估为数字的有效中缀表达式(例如,它们不会被零除)。如果您的程序可以通过在输出文件中打印相关错误消息来安全地处理无效输入,则将获得Extracredit。随此提示提供的文件“infix_expr_short.txt”包含助教在对您的程序评分时将使用的表达式子集。你的程序的输出应该完全匹配“postfix_eval_short.txt”才能获得满分。您可以在OSX或Linux上使用“diff”命令,或在Windows上使用“FC”来检查两个文件是否相同。强烈建议您编写自己的(附加的)测试用例并将它们与您的源代码一起提交以演示您的prgram的功能。输入和输出文件的位置将通过命令行提供给您的程序。第一个命令行参数将是输入文件的位置(包含中缀表达式),第二个参数将是后缀评估应存储的位置。例如,如果你的主要方法在一个名为InfixCalculator的类中,你的程序应该运行为:javaInfixCalculatorinfix_expr_short.txtmy_eval.txtHandInHand在本实验室的源代码中,位于Blackboard系统atmy.rochester.edu的适当位置.您应该提交一个压缩/存档(即包含以下内容的“压缩”文件)。提交中包含的所有文件。如果您在实施过程中超越自我,并觉得自己为您的程序中的某个功能提供额外的信用,请务必明确说明该功能是什么以及为什么它值得额外的信用。源代码文件(您可以决定需要多少)代表该项目中完成的工作。所有源代码文件都应在文件顶部的注释中包含作者标识。名为OUTPUT的纯文本文件在开头包含作者信息,并显示代码的编译和运行步骤。生成此文件的最佳方法是从命令行剪切和粘贴。任何包含额外测试用例和程序相应输出的附加文件。这些用例应在您的自述文件中进行描述,以便评分者知道您正在测试什么以及预期结果是什么.Grading70%Functionality10%driverprogramthathandlesFileI/O30%infixtopostfixconversionaccordingtotheshunting-yardalgorithm30%postfixevaluation20%Testing15%programpassestheshorttests5%program通过扩展测试10%READMEExtraCredit10%用于支持求幂、模、正弦、余弦和/或正切运算符(各2%)10%用于优雅地处理无效表达式和/或无法计算的表达式WX:codehelp

猜你喜欢