zoukankan      html  css  js  c++  java
  • 2017《面向对象程序设计》课程作业一

    传送门

    这次作业思路没有什么好说的,主要是让我们优化代码,优化项目。尽量做到模块化。

    主要按照作业要求去完成。
    以下是我完成后再main函数中的主要内容

    int main()
    {
    	double n,right=0;
    	char a[4];//随机整数 
    	char oper[3];//随机运算符 
    	char *ex; 
    	double answers;//存储正确结果 
    	n=scanf();//开始界面
    	for(int i=0;i<n;i++)
    	{
    		srand((unsigned)time(NULL));//不出现相同的随机数 
    		for(int j=0;j<4;j++)
    		{
    	
    			a[j]=randomNumber();//随机数 
    		}			
    		for(int j=0;j<3;j++)
    		{
    	
    			oper[j]=randomOperation();//运算符 
    		}	
    		
    		ex=generateExpression(a,oper);
    
    		answers=calculateResult(ex);//储存正确答案 	
    
    		if(answers==(int)answers) //检查是否存在小数 ,结果检验 
    		{
    			cout << i+1 <<".  "<<ex;
    			right+=scanf2(answers);//不是小数则进行输入答案
    		}
    
    		else//如果答案为小数,则重新进行循环
    		{
    			i=i-1;
    		}
    
    		delete [] ex;
    	}	
    
    	print(right,n);//结果诊断 	
    	
    	return 0;
    }
    

    经历:

    一开始,我在分离函数的时候,认为,带有参数什么的,太麻烦了,要写很多,有时写了, 还要返回函数值,就投机取巧,把大部分变量变成全局变量。然后自以为完美的完成了,后面去问了一下学长,感觉自己并不是真正做到函数的模块化。(在第一个版本中就是全局变量的情况--那样也间接说明我实际上对于函数运用还很不熟悉)

    接着,我就开始进行参数的添加,将大部分全局变量,又变成了在各个函数的局部变量。在这过程中遇到了挺多问题的。主要问题是函数返回一个数组的问题。最后采用了动态内存来存储,将其错误清除了。

    最后就敲定了目前在github上的最新版本。

    不足之处:

    1.这一次,我感觉我还不是很按照作业要求来完成,在main里面我将人机交互方面分成两部分来写。在部分函数使用含义上,有一部分函数可能有功能交叉的情况。

    2.写完这个代码后,发现有时题目出现变慢了,我认为原因可能是在于排除计算结果是小数的情况部分。我尝试输出一些东西时,总能发现小数部分出现次数会挺多的。然后就需要每次跳过其情况,重新随机生成表达式。这样最后导致了在计算题出现的表达式中除法的情况变得比较少---其实在第一次写这个作业就出现的情况了。

    还有,经过这次修改后,在上次出现的一个bug : @ 该字符的出现,在这次运行中没有出现了--实际上自己还不清楚其原因。TAT。

    感想:

    通过这次作业,感觉强化了自己对于函数的用法,对于模块化,比较有深入的了解。也发现自己基础还是不够扎实,还需要厚植基础0.0目前这就想到这些了。

    后续更新:

    昨天因为时间仓促,就直接在自己的本来的源代码上进行修改,我认为,一个源代码文件总不可以和main函数放在一起,直接好几百行吧。于是今天就改成了项目形式0.0(不知道算不算)用一个头文件来去包含哪些我写的函数。一开始也遇到一些,使用头文件错误的信息。后感觉还是有点投机取巧,把函数名称和函数内容都放到了头文件中,没有分成两个文件(一个包含函数名称,一个包含函数内容的形式),这样的话,别人也才能够在我的main中看下去,不然都不知道我的main函数写在哪里。

    我修改完之后,运行时出现一个问题弹出:


    目前不是很清楚。

    下面是我改成项目后,在main文件的源代码:

    #include <iostream>
    #include "allfunctions.h" 
    int main()
    {
    	double n,right=0;//题数和正确数
    	
    	char a[4];//随机整数 
    	
    	char oper[3];//随机运算符
    	 
    	char *ex; //表达式存储
    	
    	double answers;//存储正确结果 
    	
    	n=scanf();//开始界面
    	
    	for(int i=0;i<n;i++)
    	{
    		srand((unsigned)time(NULL));//不出现相同的随机数
    		
    		for(int j=0;j<4;j++)
    			a[j]=randomNumber();//随机数 
    			
    		for(int j=0;j<3;j++)
    			oper[j]=randomOperation();//运算符 
    					
    		ex=generateExpression(a,oper);//这里面我返回的是动态数组,在网上查了一下,要在末尾将动态数组删除,所以有了最下面那个语句
    		
    		answers=calculateResult(ex);//储存正确答案 	
    
    		if(answers==(int)answers) //检查是否存在小数 ,结果检验 
    		{
    			cout << i+1 <<".  "<<ex;
    			right+=scanf2(answers);//不是小数则进行输入答案
    		}
    		
    		else//如果答案为小数,则重新进行循环
    			i=i-1;
    		
    		delete [] ex;//删除动态数组
    	}	
    	
    	print(right,n);//结果诊断 
    		
    	return 0;
    }
    

    ps:我把main文件名称改成--计算题项目,所以要在github上找的话就是 allfunctions.h 和计算题项目.cpp,而之前的版本是在原版本的 多语言 上面进行修改的,因此可以 打开 多语言.cpp 查看

  • 相关阅读:
    关于git你日常工作中会用到的一些东西
    require.context
    vue-cli3.0 使用postcss-plugin-px2rem(推荐)和 postcss-pxtorem(postcss-px2rem)自动转换px为rem 的配置方法;
    div实现富文本编辑框
    webpack-bundle-analyzer打包文件分析工具
    web页面调用支付宝支付
    ajax回调中window.open弹出的窗口会被浏览器拦截的解决方法
    Django 文件上传
    Django 序列化 前端通过ajax来获取数据库中的数据
    Django Form组件 基于源码的扩展
  • 原文地址:https://www.cnblogs.com/q1076452761/p/6754143.html
Copyright © 2011-2022 走看看