第三次课程作业

第三次课程作业

很抱歉这次作业由于我不合理的安排还有紧迫的时间导致不能按时提交一份完整的作业,但我觉得经过这次大改后,我的项目会更加的规范,简洁。

这次我会提交一份项目,还有修改进度的解释,和这次作业要求知识点的感想

github仓库

修改进度及解释

这次修改原本是在讲过指针后就几经安排好的修改,后来因为种种原因在修改过程中出现的问题,还有在老师讲过之后有很多新思路,所以工程量远超出预计所以导致这次作业提交不了,不过在其中我还是有很多收获的。


这是我目前对主函数的修改因为分数和整数计算方法不同,所以我将他们分开来写,相比于上次有点乱套的函数功能我讲他们理清了很多。


language将不会作为一个单独的类,而是和界面合并在一起,这个改进我做了大量的思考, 原因有很多,在这里我不一一说明
interface类作为一个一开始设想初衷为界面的类,这次大改将他完美的实现,除了算式的输出,其他界面上的输出函数全在这里,这样以后非常容易修改。而且如图所示,在彻底理解指针后,我将language读入改成了string*返回,这样在表达输出的时候非常简洁,而上面那个参数默认值也算是现学现卖吧。

应老师的要求checkanswer这里用返回不同的值表达结果,并在interface类的成员函数输出,而不是一股脑的直接输出和结束

在这次修改中我也意识到了我的一些问题:

  1. 对类的概念模糊不清,导致一开始在做的时候就分得太多,太散,而互相之间联系很大,所以大量的使用了静态,这次修改的一个主要的目的就是去掉所有的静态变量,已完成70%。
  2. 修改的初期我犯了一个很致命的错误,在没有一边编译一边修改的情况下,对很多类一起更改,导致最后运行不了,还找不出来错误,我意识到,项目的修改不同于编程题,一步一步来才是最高效的,现在我就在这样做,比如我这里说了语言我原本存在了一个静态变量里,这次我使用了并行的方法,指添加一个新的string的读取方法,同时也不删掉原来的数组的,一边编译以便修改,直到将所有的实例化静态类去掉,就达成立目标。

这次修改是我的思路上更新的一次必须的修改,我这个人有点强迫症,这个项目被我定义为我目前为止学到的知识和思路的应用,所以每次我的修改都会尽量做到完美,最终成品我会和下一次博客作业一起提交,谢谢助教和老师的耐心。

本次作业关于多参数主函数

github仓库

注意:命令参数加上"in.txt out.txt"

主要代码

char in(char *p) {
	FILE *f; 
	char num[2] = { 0 };//题目数 
	if ((f = fopen(p, "r")) == NULL)
	{
		cout << "无法打开in" << endl;
	}
	fgets(num, 2, f);
	//因为本次提交是我的阶段性提交,所以我将题目数写入out文件证明已读取 
	return num[0];
}
int main(int argc, char *argv[])
{
	char *p1, *p2;
	char str1[2] = { 0 };
	p1 = argv[1];
	p2 = argv[2];
	char t[] = { "题目数为:" };
	inter(p2);           //界面
	str1[0] = in(p1);    //读取题数 
	write(p2, t);        
	write(p2, str1);     //输出到文件
	return 0;
}

这次作业主要碰到了_CRT_SECURE_NO_WARNINGS的问题

解决方法:

  1. 在项目位置右键->属性->c/c++->预处理器->预处理器定义->最后面加;_CRT_SECURE_NO_WARNINGS
  2. 添加#define _CRT_SECURE_NO_WARNINGS,不过有时候好像不管用
原文地址:https://www.cnblogs.com/hi-reader/p/6832982.html