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

  • 相关阅读:
    JavaBean的详细及引用
    动态页面,登陆,注册,留言 JSP
    简单登陆,注册的动态网页
    11.24作业3
    11.24作业2
    转: JAVA递归算法实例小结
    转: javascript实现全国城市三级联动菜单代码
    转: 我们为什么使用ORM?
    转:Ajax中的get和post两种请求方式的异同
    转: JSTL SQL标签库 使用
  • 原文地址:https://www.cnblogs.com/lianyg/p/6512221.html
Copyright © 2020-2023  润新知