软工实践第二次作业

Github项目地址:

https://github.com/czhasd123/PersonProject-C/tree/master/031602308%2B%E9%99%88%E5%AD%90%E6%81%92/src

PSP表格:

PSP2.1ersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划  
Estimate估计这个任务需要多少时间600900
Development开发  
Analysis需求分析 (包括学习新技术)300360
Design Spec生成设计文档3030
Design Review设计复审3040
Coding Standard代码规范 (为目前的开发制定合适的规范)3030
Design具体设计60120

Coding

具体编码120150
Code Review代码复审6060
Test测试(自我测试,修改代码,提交修改)3090
Reporting报告  
Test Repor测试报告3030
Size Measurement计算工作量2020
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划2030
 合计730960

解题思路:

       刚看到题目的时候还是比较懵的,不过只要懂得文件的读取写入,c++的按字统计和按行统计应该可以实现,在舍友的提醒下,我了解到了用map来实现单词的计数,但单靠map,单词的统计和排序就有点问题,通过查阅,发现可以通过map的value值排序来实现,具体方法是将其存入vector,用sort定义从大到小的排序来实现。


 

代码详情:

几个关键的头文件:

map的头文件<map>,vector的头文件,读取和写入文件的头文件fstream和sstream。

行数的统计:

关键在于用getline读取一行的数据,定一个判断,如果用getline读取的temp字符串为空,则跳过,非空则计数n加1.

字符数的统计:

思路类似于行数的统计,不过需要加一行Readfile>>noskipws,令其强制读取空格和回车,定一个判断,如果没有读到介绍,则计数m加1.

单词的排序、统计以及字典序输出文本:

PS:由于一些原因,本人暂时将单词统计、排序和字典序输出写在主函数里,日后有时间会进行改进。

定义map型words来记录单词及其个数,ifstream定义读取in,设置一个判断,如果从文本文件中读入字符数组temp的最后一个字符不是字母数字,则结束读取这个单词,并将单词中的大写字母转成小写,然后存入words。

定义vector,将map的单个单词及数目存入vector容器并进行字典排序。

这时先不急着进行value的排序,按照题目要求,将map存的单词按字典序输出到result.TXT。

在主函数外,定义一个cmp的从大到小的sort的比较模式。

用定义的sort排序从大到小对map的value值进行排序,并统计数目,设置一个初值为0的i,每输出一个值,i加1,但i到达10时,停止输出。


测试样例:

ps:这里每一行都有用换行符隔开。

输出结果:

输出文本结果:


心得与感悟:

       这次作业比起之前的c的作业相比都有着很大的挑战,一开始我其实并不了解怎么从命令行输入,或者如何用c来读取、写入文件等等,通过这次的作业,我从网络上和同学那里学到很多关于的统计和排序的知识,知道怎么用map和vector,学会了怎么用c来读写文件。写这个程序我是很吃力的,特别是看到题目出来没两天,就已经提交的同学的报告,而我却毫无头绪,深深地感到自己与他人的差距,即使程序写完的现在,我还是有一些地方没弄懂,报告也写的比较简单。由此,我还需要更多的学习来补足自己的漏洞。

 

转载于:https://www.cnblogs.com/czhasd/p/9637524.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值