Week 1 工程文档
计算器——工程文档
一.输入与格式
1.数据规模
本文档的输入基于如下的要求:
(1)既然是小学生,我们假设他们不会计算超过10亿的数字。
(2)既然是出考试题,那么也不会出超过10亿道题目。
也就是说 n , r ∈ int;
2.格式要求:
本文档的输出格式为:
(1) 当制造试题时,输出为n行,每行是算式编号、一个句号和一个空格,后面是一个算式。算式包含等号。四则运算符号和等号前后各有一个空格。其余符号则没有。答案输出为n行,每行是算式编号、一个句号和一个空格,后面是一个答案。
(2) 试题的输出文件夹为Exercises.txt,答案的输出是Answer.txt。
(3) 当对比答案时,接收控制台指令 –e xxx –a xxx 。xxx为试题文件和对比的答案文件。读入试题时读入至文件结束,每行读入格式为算式编号、一个句号和一个空格,后面是一个算式。算式包含等号。四则运算符号和等号前后各有一个空格。其余符号则没有。读入答案时每行是算式编号、一个句号和一个空格,后面是一个答案。
(4) 输出一个文件,为正误信息。文件是Grade.txt,内容是正确的试题编号和错误的试题编号,每两个编号之间由一个逗号和一个空格隔开。
二.程序结构
程序的大体关系如图所示,由于没有相关软件,先拿画图画了一个。
三.具体实现方法
- 程序的括号
括号随机的生成,保证不造成违法的输入。可能括号内算式的优先级本来就高,加了括号不改变次序,也可能改变计算次序和计算结果。
- 算式的生成
算式生成的方法是,先生成所有互为素数的分子和分母。范围在Range之内,当range过大时,将range缩小为20000。
- 算式的计算
生成中缀表达式,Compute类中的work方法把中缀表达式变为后缀表达式,然后压栈进行计算。
- 答案输出
以字符串格式读入,处理字符串,得到数字栈和符号,依据后缀表达式来计算,最后在栈里的第一个数就是结果。
- 答案格式
答案转成字符串 以字符串格式输出。