zoukankan      html  css  js  c++  java
  • 课程作业一

    课程作业一

    github链接

    这次作业我选择了重构代码,因为我上几次作业使用了类似于出题模板的代码,导致我的程序随机性不够,于是我下定决心写一份符合我自己的要求的代码,期间遇见了许许多多的问题,例如计算生成算式值的时候,自己也想了了一个思路:用string型变量来存储算式,然后去寻找第一个“)”,然后计算它与前一个“(”之间算式的值,然后用这个值来替代原来的(a*b+c),然后继续寻找下一个“)”,如此的替换下去,就会把原来复杂的算式,变成一个没有括号的算式,但是在执行的时候我发现,如果括号之间的值为浮点数,就很难进行替代了。思索了很久,终于忍不住去论坛上寻找大佬的帮助,在一篇文章中看到可以用栈的方式来进行求解,具体方式就是扫描整个算式,遇见数字就将其转换为浮点型,存入temp变量中,接下来用下一次遇见的符号来判断是否将这个数值压入数字栈,然后将符号压入符号栈,检测本次符号与栈顶符号的优先级,来简化算式,具体的解释,我在代码中已经标注。

    这次作业的感想

    这次作业让懂得,写一篇完善的代码确实是一件难事,这次作业整整花费我两天的实践,编码到深夜,但是我觉得是值得的,至少我通过自己的努力写出了一份让自己满意的代码,也在网上学习到了很多东西,比如:vector型容器和map容器,在这期间我也向陈逸超学长,和赵畅学长问了一些问题,很感谢两位学长的耐心解答,之前的代码也告诫着我:偷懒是没有好果子吃的!

    对分离函数的看法

    分离函数能使自己的程序看起来更具有条理性,读者能很清楚的看出每个模块的功能,这正体现了C语言的特点:模块化设计。在以后的编码中我也会采用这种的编码格式。下面是我的主函数

    int main() {
    
    	srand(time(0));
    
    	int sum = 0;
    
    	class problem p;
    
    	p.SelectLanguage();
    
    	p.showTip();
    
    	while (true)
    
    	{
    
    		string question = p.generateExpression();		//用于生成题目 
    
    		cout << question << " = ";
    
    		float answer = p.calculateResult(question);		//用于计算结果 
    
    		//	cout << answer << endl;
    
    		sum += p.scan(answer);					//用于用户输入并计算做对题目的数目 
    
    		//	cout << sum << endl;
    
    		if (p.end() == 1)                               //用于结束应用 
    
    		{
    
    			break;
    
    		}
    
    	}
    
    	p.print(sum);                                //用于输出结果 
    
    	return 0;
    
    }
    
  • 相关阅读:
    delphi7调用webservice Java 传入参数为空
    delphi客户端调服务器端的java webservice如何在参数中传对象? 转
    DELPHI7如何调用带参数的JAVA WebService
    Delphi调用java开发的WebService,传入参数出错
    cxgrid按条件计算合计值 TcxTreeList计算合计值
    收款凭证
    delphi TCXTreelist 通过代码控制行的可编辑性
    win7 共享
    单到冲回的暂估方式,暂估入库的操作流程是怎样的?
    js常用函数和常用技巧
  • 原文地址:https://www.cnblogs.com/031602523liu/p/6753741.html
Copyright © 2011-2022 走看看