- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四则运算三c汇编
结对开发——四则运算(三)
发表日期时间: 2016-03-19 10:17
一、题目及题目要求
编程随机生成四则运算,算数包括整数和真分数
1.题目避免重复
2.可定制(数量/打印方式)
3.可以控制下列参数:
????????? 是否有乘除法;
????????? 是否有括号(最多可以支持十个数参与运算);
????????? 数值范围;
????????? 加减有无负数;
????????? 除法有无余数。
4.输入结果并判断正确
二、设计思路
? ? 在上次程序的基础上进行修改,
??? 1.题目避免重复:为避免随机数每次相同用了srand函数。
??? 2.可定制出题数量:通过键盘输入数字,在for循环中控制循环次数。
???3. 是否有乘除法:把算符分为两大类,利用case语句选择前四种加和减,后四种乘除。
???4. 数值范围:在产生随机数时通过输入控制rand函数的参数,从而使运算数不超过此范围。
???5. 加减有无负号:结果无负数,判断两操作数,第一操作数若比第二操作数小,则第二个减第一个。
???6.除法有无余数:除法无余数,判断第一操作数模第二操作数的结果,若为0即可输出,否则再循环一次。
???7.是否有括号:先随机生成一个数字,代表着生成表达式中操作数的个数。再循环生成一个数字,将其输出,然后等概率生成‘+’‘-’‘*’‘/’中的一个跟在该数字后面,输出。以一定概率生成左括号,若生成了左括号则输出,并进行计数标志当前共有多少个未完成匹配的左括号。若当前有未完成匹配的左括号,则在生成一个数字后,生成一个操作符前,以一定的概率生成右括号。在生成完毕后,生成最后一个数并将为匹配的左括号予以匹配。把产生的式子存入文件。
?? 8.输入结果并判断正确:(1)对于两个运算数的式子,把结果存入数组,调用函数与数组中的值比较。(2)对于多个运算数的式子,从文件中读取内容,利用中缀表达式转换为后缀表达式,然后就是后缀表达式的计算,最后与用户输入结果对比。
三、代码
#includeiostream
#includectime
#includestack
#includefstream
#define length 10000//存放答案数组长度
using namespace std;
typedef long long ll;
ofstream fout(equation.txt);
char Op[] = {+, -, *, /};
int rights;//对题数目
int wrong;//错题数目
struct num{
ll numerator, denominator;
num(){numerator = 0; denominator = 1;}
num(int n) {numerator = n; denominator = 1;}
num(int n,int d) {numerator = n; denominator = d;}
void operator = (num x)
{
numerator = x.numerator;
denominator = x.denominator;
}
};
#define maxl 1005
char nifix[maxl], post[maxl];
char ans[maxl];
int cnt_right, cnt_wrong;
bool error;
num res, rst;
//****分数类***//
class fraction
{
private:
int above; //分子
int below; //分母
void reduction(); //约分
fraction makeCommond(fraction); //通分
public:
fraction()
{ //构造函数
}
fraction add(fraction); //两分数相加
fraction sub(fraction); //两分数相减
fraction mul(fraction); //两分数相乘
fraction div(fraction); //两分数相除
int display(int,int); //显
文档评论(0)