Individual Project - Word frequency program——12061154Joy
http://www.cnblogs.com/jiel/p/3978727.html
项目时间估计
理解项目要求: 1h
构建项目逻辑: 1h
查阅相关资料: 1h
编写&调试程序: 6h
样例测试&功能完善: 2h
项目效率分析: 1h
项目优化: 2h
总结&提交: 2h
项目实际完成时间
实际完成时间三天,真是佩服自己的效率,题目意思不难理解,实现也起来也不难,各个部分的算法想好应该怎么实现,但是对于完全陌生的C#只能写一写就去Google一下相关的写法,查找资料用了相当长的时间。写完代码以后Debug没有用多长时间,有一个小错误很快就发现了。但是后来题目关于排序的意思理解有点问题,又重新查资料修改。然后再测试样例上的时间比较多,测试数据按照我对题目的理解应该是能输出正确结果的。
开发过程
开发过程其实不能算充满艰辛,因为以前面向对象课的时候写过类似的统计词频的题,知道大概的算法实现,但因为对C#语言的不了解,查相关函数及其用法时用了相当长的时间,不过对于正在拼命学英语的我来说多读读英文文档还是比较有好处的。
关于算法实现,我是用一个dictionary来存储单词,Dictionary<string,<int,string>>(StringComparer.OrdinalIgnoreCase),第一个string是用于判断符合条件的word是否已经出现过,第二个string是用来存放出现过的单词的最小ASCII码的单词。
整个过程就是在指定目录中寻找后缀满足条件(.txt,.cpp,.h,.cs)的文件,读取内容,将内容按规则分割成字符串数组parts,遍历parts,若满足<word>条件(简单模式)、<word word>(-e2模式)或<word word word>(-e3模式)就按规则存入字典dictionary中。全部读取完后,按照模式方式输出在当前exe所在目录下的12061154Joy.txt中。
性能分析
跑了Visual Studio2012 的安装包,大概5.7G,不过只有5858个样本还跑了90+s,真是慢的可以;不过后来跑就只有30+s了,我也不知道是怎么回事。
由图可以看出,独占样本较多的函数主要是Match和Split函数,因为程序运行过程中不断的在分割文件内容和匹配word。

函数非独占样本比例和独占样本比例:

函数使用率细节:


测试样例
1,"123file file123 file File FiLe"
这个“123file”并不符合<word>的要求,但是刚开始我的正则表达式竟然匹配成功了。因为表达式里没有指出三个字母是在word开头,所以出现了错误。
这里的“file”单词单个输出应该是“FiLe”,因为它的ASCII码最小。
期望&输出结果:


2,“In your pattern you group elements with round brackets”
检测“-e2”模式下两个word组合在一起
期望&输出结果:

3,“In your-=pattern you@ ^&group eleme$nts with round brackets”
两或三个word匹配时的限制条件:只能有一个空格符
期望&输出结果:


4,“
txt file
tXt File
tXT file
TxT fiLe
How Are You?
how old are you
hOw oLd aRe yOu
HoW arE YOu?
”
除大小写外相同的单词之间的匹配和排序问题,所有排序都是按照ASCII码顺序排列
期望&输出结果:


5,测试空目录
输出空白txt
期望&输出结果:

6,测试不存在的目录
控制台输出“Directory is not exsiting!!”

7,测试错误模式指令
控制台输出“Command is wrong!!Please check again!”

8,测试.txt & .cpp & .h & .cs 文件中夹杂了其他类型的文件
只输出了这四种文件里面的内容
9,“
E:\Let's study!\创意论文\2013
E:\Let's study!\计算机操作\网页制作
E:\Let's study!\编译原理\编译PPT
E:\Let's study!\计算机操作\网页制作\网页\Templates
E:\Let's study!\编译原理
E:\Let's study!\计算机操作\ppt\PPT音影素材
”
对非字母数字的符号及中文的检测
期望&输出结果:

9,“
how are you
how Are you
fine thank you and YOU
fine Thank you And you
fine thank YOU and
”
小伙伴的测试样例,还好是对的
期望&输出结果:

10,“
between a letter followed bya point comma.
Still it should be included in the result.
”
期望&输出结果:

我学到的
这次的作业又让我被学会了一门语言——C#,和学习面向对象课的时候一样,也是被学会了Java。这次还好有的选择,对于指针的恐惧让我选择了和Java相似的C#,还好语言之间有非常多的相似性,但是一些函数的用法比如Dictionary,list.Sort实在是不甚熟悉,只有每碰到一个问题时就Google一下,也让我在读文档的过程中学到了不少的东西。
结果固然重要,但是学习的过程更重要,在学习函数用法时了解了许多,读下来那么多词的英文文档我都佩服死自己了;熬夜码代码却乐在其中,有些东西不只因为是任务才努力去完成,主要是希望能够收获一些,让自己前进一些。What I have learnt in the process is much greater than just getting the result.
Individual Project - Word frequency program——12061154Joy的更多相关文章
- Individual Project - Word frequency program by HJB
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;us ...
- Limeng:Individual Project: Word frequency program -BUAA Advanced Software Engineering
11061190-李孟 Implement a console application to tally the frequency of words under a directory (2 mod ...
- Individual Project - Word frequency program - Multi Thread And Optimization
作业说明详见:http://www.cnblogs.com/jiel/p/3978727.html 一.开始写代码前的规划: 1.尝试用C#来写,之前没有学过C#,所以打算先花1天的时间学习C# 2. ...
- SoftwareEngineering Individual Project - Word frequency program
说实话前面c#实在没怎么学过.这次写起来感觉非常陌生,就连怎么引用名空间都忘记了.在经过恶补后还是慢慢地适应了. 1.项目预计用时: 构建并写出大概的数据结构,程序框架及模块: 30min 实现文件夹 ...
- Individual Project - Word frequency program
1.项目预计用时 -计划学习C#和百度一些用法的时间:5小时 -项目本身打算写两个类,一个是遍历搜索文件夹的,另外一个用来统计单词.计划用时:5小时 2.项目实际用时 学习C#以及正则表达式的用法:3 ...
- Record for Individual Project ( Word frequency program )
1. 预计时间 ● 对问题总体的理解.规划:10 min ● 设计编写程序:5 h ● 调试: 分模块-40 min; 总体-40min ● 测试(性能分析).改进:1 h 2. 实际用时 ● 对 ...
- THE First Individual Project - Word frequency program
第一次写博客,这次也是本学期写到第一个程序. 老师要求网址:http://www.cnblogs.com/jiel/p/3311400.html#2777556 一.项目预计时间 一开始想使用不熟悉的 ...
- Individual Project - Word frequency program-11061171-MaoYu
BUAA Advanced Software Engineering Project: Individual Project - Word frequency program Ryan Mao (毛 ...
- Project: Individual Project - Word frequency program----11061192zmx
Description & Requirements http://www.cnblogs.com/jiel/p/3311400.html 项目时间估计 理解项目要求: 1小时 构建项目逻辑: ...
随机推荐
- apache配置CA证书通过https通信
Apache Httpd 2.2 实现https加密通讯 实际生产中CA证书一般是向一些专业认证的国际机构来进行申请的.我们会模拟使用OpenSSL生成的证书,来实现Apache的安全加密通讯,这与实 ...
- MySQL sql_mode=only_full_group_by错误
今天在测试服务器上突然出现了这么一个MySQL的问题,同样的代码正式服没有问题,那肯定就是出在了配置上,查了一下原因才明白原来是数据库版本为5.7以上的版本, 默认是开启了 only_full_gro ...
- ccf-20170303--Markdown
我的想法如下图: 代码和题目如下: 问题描述 试题编号: 201703-3 试题名称: Markdown 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 Markdown 是一 ...
- oracle数据库用户基本操作
每个数据库都有一系列的用户,为了访问数据库,用户必须使用用户名等信息先连接上数据库实例,oracle数据库提供了多种方式来管理用户安全.创建用户的时候,可以通过授权等操作来限制用户能访问的资源以及一些 ...
- 百度地图API开发
1.首先申请百度地图秘钥 http://lbsyun.baidu.com/ 2.需要填一个申请的界面 3.申请后会有类似的东西 4.之后参照以下网址进行MFC编译 mfc webbrowser控件使用 ...
- jquery的自定义事件通过on绑定trigger触发
jquery绑定自定义事件,可以实现预先绑定好一个处理方法,当需要使用的时候利用jquery trigger来触发自定义事件,以达到方便快捷的目的.我们来假设一个这样的场景,一个textarea中的字 ...
- Java中一个线程只有六个状态。至于阻塞、可运行、挂起状态都是人们为了便于理解,自己加上去的。
java中,线程的状态使用一个枚举类型来描述的.这个枚举一共有6个值: NEW(新建).RUNNABLE(运行).BLOCKED(锁池).TIMED_WAITING(定时等待).WAITING(等待) ...
- UOJ 【UR #5】怎样跑得更快
[UOJ#62]怎样跑得更快 题面 这个题让人有高斯消元的冲动,但肯定是不行的. 这个题算是莫比乌斯反演的一个非常巧妙的应用(不看题解不会做). 套路1: 因为\(b(i)\)能表达成一系列\(x(i ...
- UCML异常提示:无效URI
UCML异常提示界面,点击确定后UCML退出无法使用,原因见图二 图一: 图二:源码路径错误导致找不到路径出异常提示,在数据库中将数据update回正确路径即可解决该问题
- Linux中添加、修改和删除用户和用户组
宽为限 紧用功 功夫到 滞塞通 一.用户: 在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动会生成一个与用户名同名的工作组.创建用户user1的时候指定其所属工作组user ...