个人作业1--四则运算题目生成程序
coding地址
https://coding.net/u/lianyg/p/firstsubject/git/tree/master
一、题目要求
1.除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
2.运算符为 +, −, ×, ÷
3.并且要求能处理用户的输入,并判断对错,打分统计正确率。
4.要求能处理用户输入的真分数, 如 1/2, 5/12 等
5.使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
Myapp.exe -n 10
二、实现步骤
1.需求分析:
自动生成题目,整数与整数,分数与分数,整数与分数,并判断输入的答案是否正确,并得出正确率。
2.功能设计:
随机数生成,随机产生题目,校对答案。
3.设计实现:
生成随机数
int getrandom(int n){
int random=rand()%n;
return random+1;
}
检查是不是最简的分数
int check(int a,int c){ for(int i=2;i<=a;i++) { if(a%i==0&&c%i==0){ return 0; break; } } return 1; }
创造题目的函数
void create_sub(){
cout<<endl;
string yunsuanfu;
int change1,change2;
int x,y;
int q1,q2,q3,q4;
int answer,reply;
int a,c=-1;
char b;
change1=getrandom(4);
switch(change1)
{
case 1:yunsuanfu='+';break;
case 2:yunsuanfu='-';break;
case 3:yunsuanfu='*';break;
case 4:yunsuanfu="÷";break;
}
change2=getrandom(2);
switch(change2){
case 1:{
x=getrandom(100);
y=getrandom(100);
cout<<x<<yunsuanfu<<y<<"=";
if(change1==1)
{
cin>>reply;
answer=x+y;
if(answer==reply)
{
cout<<"right";
right_num++;
}
else{
cout<<"wrong";
}
}
else if(change1==2)
{
cin>>reply;
answer=x-y;
if(answer==reply)
{
cout<<"right";
right_num++;
}
else{
cout<<"wrong";
}
}
else if(change1==3)
{
cin>>reply;
answer=x*y;
if(answer==reply)
{
cout<<"right";
right_num++;
}
else{
cout<<"wrong";
}
}
else{//除法
cin>>a;
b=cin.get();
if(b!='\n'){
cin>>c;
}
if(c==0)
{
cout<<"wrong";
break;
}
else if(c!=-1)
{
if(check(a,c)==0){
cout<<"wrong";
break;
}
}
answer=x/y;
if((c==-1&&answer==a)||(c!=-1&&(answer==a/c))){
cout<<"right";
right_num++;
}
/*cin>>a;b=cin.get();
if(b!='\n') {
cin>>c;
}*/
}
};break;
case 2:{
q1=getrandom(100);
q2=getrandom(100);
q3=getrandom(100);
q4=getrandom(100);
cout<<"("<<q1<<"/"<<q2<<")"<<yunsuanfu<<"("<<q3<<"/"<<q4<<")"<<"=";
if(change1==1)
{
cin>>a;
b=cin.get();
if(b!='\n'){
cin>>c;
}
answer=(q1*q4+q3*q2)/(q2*q4);
if(c==-1&&answer==a)
{
cout<<"right";
right_num++;
}
else if(c!=-1&&answer==(a/c)&&check(a,c)==1)
{
cout<<"right";
right_num++;
}
else
{
cout<<"wrong";
}
}
else if(change1==2)
{
cin>>a;
b=cin.get();
if(b!='\n'){
cin>>c;
}
answer=(q1*q4-q3*q2)/(q2*q4);
if(c==-1&&answer==a)
{
cout<<"right";
right_num++;
}
else if(c!=-1&&answer==(a/c)&&check(a,c)==1)
{
cout<<"right";
right_num++;
}
else
{
cout<<"wrong";
}
}
else if(change1==3)
{
cin>>a;
b=cin.get();
if(b!='\n'){
cin>>c;
}
answer=(q1*q3)/(q2*q4);
if(c==-1&&answer==a)
{
cout<<"right";
right_num++;
}
else if(c!=-1&&answer==(a/c)&&check(a,c)==1)
{
cout<<"right";
right_num++;
}
else
{
cout<<"wrong";
}
}
else{
cin>>a;
b=cin.get();
if(b!='\n'){
cin>>c;
}
answer=(q1*q4)/(q2*q3);
if(c==-1&&answer==a)
{
cout<<"right";
right_num++;
}
else if(c!=-1&&answer==(a/c)&&check(a,c)==1)
{
cout<<"right";
right_num++;
}
else
{
cout<<"wrong";
}
}
};break;
}
/*system("pause");*/
}
三、psp
|
Personal Software Process Stages |
Estimated Time(min) |
Actual Time (min) |
|
计划 |
5 |
5 |
|
·任务估计 |
5 |
5 |
|
开发 |
100 |
200 |
|
·需求分析 (包括学习新技术) |
15 |
8 |
|
·生成设计文档 |
5 |
6 |
|
·设计复审 |
5 |
3 |
|
·代码规范 |
1 |
1 |
|
·具体设计 |
5 |
8 |
|
·具体编码 |
60 |
100 |
|
·代码复审 |
5 |
2 |
|
·测试(自我测试,修改代码,提交修改) |
10 |
20 |
|
报告 |
30 |
25 |
|
·测试报告 |
10 |
20 |
|
·计算工作量 |
5 |
5 |
|
·提出过程改进计划 |
5 |
0 |
四、运算结果:

五、总结
代码写的还是有些没弄好的,像从控制台输入参数,觉得并未写清楚,好像是要在int main()里添加别的东西完成,还有就是整数和分数的运算并未做出来,只做了整数与整数,分数于分数的运算,并且代码中的一段创造函数的代码过长,等等缺陷。还有一个是写代码时,没有太多注解。
posted on 2017-03-06 22:17 vanspumakappa 阅读(285) 评论(4) 收藏 举报
浙公网安备 33010602011771号