Individual Project - Word frequency program

1.做这个项目之前,因为之前在OO课中做过一些项目,这钟算法也非常熟悉,因此算上单纯的词法算法,和C#语言中文件操作的学习,预计一天之内应该可以写好。
2.实际上做起来时,我发现c#与之前学过的java还是有些差别的,算法非常简单,但是学习使用c#花了许多时间,零零碎碎共做了2天。

3.原本一直认为程序的最大资源使用会是单词按词频排序,但是经过算法的分析,还是单词+空格+单词这种格式的判断比较耗费时间

我的算法是这样的:读入一个文本文件的所有字符,以一个字符串形式储存。从头到尾遍历字符串,认为大小写字母和数字都是“字符”,其他都是分隔符,这样整个字符串就是这样的形式:

字符+分隔符+字符+分隔符+...

将所有字符按顺序存储于一个数组中,将所有分隔符也储存在一个数组中。

这样第i个分隔符的左右两个字符就是第i个字符和第i+1个字符(若i+1还在字符数组的范围内)

字符并不是等同于要求中的单词,需要经过检查。

建立单词类,由一个字符串“单词” 和一个整形数“数量”组成。

功能1:新建单词数组,从前往后遍历字符数组,有符合单词的条件的字符就加入数组。数组在加入单词时检查这个单词(无视大小写)是否存在过,若不存在新加单词,若存在则数量加1并更新这个单词的大小写。然后数组按单词词频排序,数量相等的单词按名称字典序升序排序。

功能2:新建“双单词”数组,遍历分隔符数组,若分隔符是单个空格,则检查这个分隔符两旁的字符是否都是单词(若越界则不检查),若都是单词,将这个“左单词”+“ ”+“右单词”

的字符串加入“双单词”数组中,处理方法同功能1,输出词频前10位。

功能3:新建“三单词”数组,遍历分隔符数组,若连续两个分隔符都是单个空格,则检查这两个分隔符附近的三个字符是否都是单词(若越界则不检查),若都是单词,将这个“左单词”+“ ”+“中单词”+“ ”+“右单词”的字符串加入“三单词”数组中,处理方法同功能1,输出词频前10位。

4.测试用例:共取了纽约时报上的10篇文章,有些位于测试文件目录下,有些位于测试文件目录中的文件目录下

与我的队友一起测试,将取得的结果进行对比。

5.要提高程序效率,一个好的算法非常重要,这少不了编程前的细致分析。另外,我注意到,我写的程序的可移植性很差,整体来看功能是可以的,但是内部几个部分的编程风格还是十分粘滞,我写其他程序时经常要把已经写过的功能再写一遍。这并不是什么好习惯,我在以后的编程过程中一定会注意。

时间: 2024-10-12 22:28:02

Individual Project - Word frequency program的相关文章

Individual Project - Word frequency program by HJB

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading.Tasks; using System.Collections;namespace ConsoleApplication1{ class v { public int n { get;

SoftwareEngineering Individual Project - Word frequency program

说实话前面c#实在没怎么学过.这次写起来感觉非常陌生,就连怎么引用名空间都忘记了.在经过恶补后还是慢慢地适应了. 1.项目预计用时: 构建并写出大概的数据结构,程序框架及模块: 30min 实现文件夹递归方问方法 :30min 实现从文件中读出符合要求的单词并统计 :2-3h 实现对单词的排序 : 1h 输出:10min 细节修改及错误排查:2-3h 程序优化: 1h 2.项目的实际用时: 构建并写出大概的数据结构,程序框架及模块: 30min 实现文件夹递归方问方法 :30min 实现从文件中

软件工程:Individual Project - Word frequency program

千辛万苦敲完了这个项目的代码,说实话真的没想到会花费这么多的时间,在现实的强烈对比下才发现自己真的是图样图森破. 1.预计用时 因为上个学期的OO课做过类似的程序,想一想觉得再做一遍so easy,于是感觉心理有谱,预计用4个小时搞定,再用最多1个小时做测试. 2.现实的残酷性 前3个小时是用来干杂务的(写宏函数,建树,写小函数,对命令行情况的分类讨论,设计整个项目的结构), 再有3个小时是找各种资料的(文件流,模板库,string类,还有忘得差不多了的二叉树遍历), 再一个3个小时是用来敲代码

Individual Project Records

At the midnight of September 20, I finished my individual projcet -- a word frequency program. You can find requirements in details at http://www.cnblogs.com/jiel/p/3978727.html Before beginning coding, I suppose I can finfish it in about 4 hours or

Word frequency analysis

Write a program that reads a file, breaks each line into words, scripts whitespace and punctuation from the words, and converts them to lowercase. Modify the program to print the 20 most frequently-used words in the book. First I downloaded the e-boo

192. Word Frequency

192. Word Frequency QuestionEditorial Solution My Submissions Total Accepted: 5272 Total Submissions: 20228 Difficulty: Medium Write a bash script to calculate the frequency of each word in a text file words.txt. For simplicity sake, you may assume:

Scrutiny of Partner's individual project Code

因为队友的代码并没有完整的实现个人项目的完整功能. 已实现功能: 1.对单个单词进行词频统计 2.能够按照老师的要求的格式对制定的有效字符串进行匹配,并且输出至指定文件. 未实现: 1.对连续多个单词进行匹配以及计数 2.对已存储的单词进行排序输出. 代码优点: 1.逻辑严谨 2.格式规范优美 代码缺点: 1.注释较少,代码可读性差,建议在较难或者核心的代码语句或者函数部分配上详细注释或者为程序本神配上文档 2.模块责任分割不均,模块之间功能有少许重复. 3.使用c++进行工程项目,却并没有使用

[Bash]LeetCode192..统计词频 | Word Frequency

Write a bash script to calculate the frequency of each word in a text file words.txt. For simplicity sake, you may assume: words.txt contains only lowercase characters and space ' ' characters. Each word must consist of lowercase characters only. Wor

Word Frequency

Write a bash script to calculate the frequency of each word in a text file words.txt. For simplicity sake, you may assume: words.txt contains only lowercase characters and space ' ' characters. Each word must consist of lowercase characters only. Wor