个人作业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!='
'){
					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!='
')  {
                 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!='
'){
				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!='
'){
				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!='
'){
				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!='
'){
				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()里添加别的东西完成,还有就是整数和分数的运算并未做出来,只做了整数与整数,分数于分数的运算,并且代码中的一段创造函数的代码过长,等等缺陷。还有一个是写代码时,没有太多注解。

原文地址:https://www.cnblogs.com/lianyg/p/6512221.html