202103226-1 编程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018/
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018/homework/11879
这个作业的目标 使用码云
其他参考文献 https://blog.csdn.net/p445098355/article/details/104766195
其他参考文献 https://blog.csdn.net/chuang504321176/article/details/102988640

Gitee项目地址

https://gitee.com/gt250/project-c/tree/master/20188486	
https://gitee.com/gt250/project-c	

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 60
Estimate 估计这个任务需要多少时间 480 600
Development 开发 120 150
Analysis 需求分析 (包括学习新技术) 180 180
Design Spec 生成设计文档 30 45
Design Review 设计复审 5 5
Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 0
Design 具体设计 30 20
Coding 具体编码 180 150
Code Review 代码复审 30 15
Test 测试(自我测试,修改代码,提交修改) 30 30
Reporting 报告 60 60
0Test Repor 测试报告 60 10
Size Measurement 计算工作量 0 0
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 20 5
合计 1265 1340

解题思路描述

每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。
然后通过top10word函数进行计数排序,对不同的单词进行标记技术

设计与实现过程

①行遍历,判断空格等字符,计算行数,字符数,单词数

while(fgets(buffer, 1003, fp) != NULL){
        bufferLen = strlen(buffer);
        // 遍历缓冲区的内容
        for(i=0; i<bufferLen; i++){
            c = buffer[i];
            if( c==' ' || c=='\t'){  // 遇到空格
                !isLastBlank && wordNum++;  // 如果上个字符不是空格,那么单词数加1
                isLastBlank = 1;
            }else if(c!='\n'&&c!='\r'){  // 忽略换行符
                charNum++;  // 如果既不是换行符也不是空格,字符数加1
                isLastBlank = 0;
           }
        }

②排序函数,以及单词本

typedef struct Word{
	char s[20];
	int num;
} Word;           

int cmp(const void *a,const void*b){
	struct Word*a1=(Word *)a;
	struct Word*b1=(Word *)b;
	return b1->num-a1->num;
}

③函数

int *getCharNum(char *filename, int *totalNum);
int top10Word();
qsort(word,m,sizeof(Word),cmp);

性能改进

一开始无法实现top10word的功能准备放弃,但还是查询了资料,以及寻求了周围朋友的帮助。
帮助我进行了思路的梳理,以及代码的书写,还是勉强的实现了单词排序;

单元测试

①在网络上找了一个测试数据

②运行成功的截图

异常处理说明

①加入top10word函数以后无法输出,输出的只有总行数、字符以及单词

检查发现没有定义函数,导致无法调用函数;

②还是无法输出

主函数下未调用函数进行输出;

心路历程与收获

还挺崩溃的,一直想放弃,实在做不下去了

gitee码云仓库和本地仓库的连接,尝试了好几天,无法连接,之后一直在找以前的资料,然后百度看各种文章,也算是在作业快截止的时候完成了连接,当时觉得怎么连接push比写代码还难,也是自己学艺不精,专业能力太差了,对作业感到无从下手完成起来也很吃力,没有头绪。

在不断尝试中,还是有积极的去寻找解决方案,还是没有轻易的放弃,尽管自己不停的抱怨,但是好在自己也是坚持下来了,不断请教别人,周围的人都很好,不管是助教还是同学有问题都会做解答,还是很方便。

posted @ 2021-04-02 00:14  高田250  阅读(86)  评论(0编辑  收藏  举报