统计一个数组实现两个栈英文文件中各单词出现的次数,用一位数组如何实现

写一个程序,分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的十个词打印出来。
编辑:www.fx114.net
本篇文章主要介绍了"写一个程序,分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的十个词打印出来。 ",主要涉及到写一个程序,分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的十个词打印出来。 方面的内容,对于写一个程序,分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的十个词打印出来。 感兴趣的同学可以参考一下。
/*设计思想:1.将文本从文件中读取出来2.在读取的过程中,将单词一个一个分离开来 if(取出来的单词以前取出来过){ 计数加一 }else{ 将单词记录下来 }3.输出出现次数最多的十个单词*/ 1 package
2 import java.io.FileInputS//导入相应的包
3 import java.io.FileNotFoundE
4 import java.io.IOE
5 import java.util.V
6 class Counter {//自定义一个类
private Vector vec=null;//此变量用来存放字符串数组即单词
private int a[]=null;//统计下表所对应的单词的个数
public Counter()//构造函数
10
vec=new Vector(1,1);
12
a=new int[1];
13
private void add(String str,int n)//添加新增单词的方法
15
vec.addElement(str);//添加新单词
17
int b[]=new int[n];//重新申请空间
18
for(int i=0;i&n-1;i++)//将原来记录的数据复制到新数组中
19
b[i]=a[i];
21
a[n-1]=1;//将新添加单词的数量计为一
24
public void judge(String str)//判断是否传入的字符串即单词,是否存在
26
int flag=0;
28
int i=0;
29
for (i = 0; i &vec.size(); i++) {
30
if (vec.elementAt(i).toString().equalsIgnoreCase(str)) {//用忽略字母大小的方法进行比较
31
a[i]++;
32
//设置了一个标志,以方便下面判断是否新添单词
33
break;//判断出有相同的单词,退出循环
34
if(flag==0)//判断是否新添单词
37
int n=i+1;
39
add(str,n);
40
void output()//控制输出
43
int max=0;
45
int flag=0;
46
for(int i=1;i&=10;i++)//输出十个
47
max=a[0];
49
for(int j=0;j&vec.size();j++)//找出所统计单词,出现最多的
50
if(max&a[j])
52
max=a[j];
54
flag=j;
55
System.out.print("序号"+1+":");
59
System.out.print(vec.elementAt(flag)+"的数量:");
60
System.out.println(a[flag]);
61
a[flag]=0;//将输出的单词的统计数量置为零
62
}
65 }
66 public class Text {//主类
67
public static void main(String[] args) throws IOException {
68
Counter counter=new Counter();
69
FileInputStream rf=new
FileInputStream("D:/text.txt");//读取文件
70
String strr=new String();
73
while((b=rf.read())!=-1)//循环读取文件
74
a=(char)b;
76
if((a&='a'&&a&='z')||(a&='A'&&a&='Z'))//判断读取的是不是字母
77
strr=strr.concat(""+a);//字母连接成单词
79
counter.judge(strr);//单词的统计
84
strr=new String();
85
rf.close();//关闭输入流
89
counter.output();//输出结果
90
}
91}//用时4个小时!
如果您觉得这篇文章对您有帮助,欢迎使用支付宝对我们捐助。
本文标题:
本页链接:第5课 学了C语言,如何写一个程序统计一篇英文文章中的单词数?(续,处理main()函数的参数使其可以处理命令行参数,同时将main()函数拆分成多个函数) - C语言动手训练营 - 好知网
L5学了C语言,如何写一个程序统计一篇英文文章中的单词数?(续,处理main()函数的参数使其可以处理命令行参数,同时将main()函数拆分成多个函数)
在前一篇文章中,我们介绍了如何通过统计一个字符串中的空格字符数来间接地得到一个字符串中的字符数。当我们学过的“第10章 文件的输入与输出 对文件的输入输出”以及“8.7.3 向main()函数传递数据 指针数组作main函数的形参”之后,我们还可以对逐个程序进行扩展,让他可以接受命令行的参数,打开某个文件,然后对其中的单词数进行统计。 要在原程序的基础上进行扩展,实现对文章中单词数的统计,我们有两个工作要做:将原来全部放在main()函数中进行的单词统计功能抽取出来,单独成一个独立的函数countword(),它可以接受一个char*类型的参数,返回的是这个指针所指向的字符串中的单词数。这里需要注意的是,因为在文章中,换行也会分割单词,所以我们也应将换行字符’\n’统计在内。单独地利用fopen()以及fgets()等操作文件的函数,将文件中的字符串读取到一个字符数组中,供上一步完成的countword()函数进行统计。这些工作都提取到read()函数中完成。经过这样的分析我们程序在main()函数中要完成的工作也就清晰了,首先用read()函数读取文件到一个字符数组,然后用countword()函数对读取得到的字符串中的单词数进行统计。经过这样的分析,再结合我们在《C程序设计伴侣》中学到的文件读写,字符串处理,main()函数的参数等知识,整个程序的实现就很简单了。你可以按照上面的思路自己实现,也可以参考下面的实现。 1: // countword.c 5.8 综合运用——检测磁盘剩余容量与统计字符串中的单词数 2: #include &stdio.h& 3: #include &string.h& 4: #include &stdbool.h& 5:
6: // 读取文件到字符数组 7: bool read(const char* file,char* str) 8: { 9:
if( NULL == file || NULL == str) 10:
return false; 12:
// 以只读方式打开文件 14:
FILE* fp = fopen(file,"r"); 15:
if(NULL!=fp) 16:
// 用fgets()函数读取文件 18:
char line[128] = ""; 19:
while(fgets(line,128,fp)!=NULL) 20:
// 将读取得到的字符串保存到目标字符数组中 22:
strcat(str,line); 23:
// 关闭文件 25:
fclose(fp); 26:
fp = NULL; 27:
return true; 28:
printf("cannot open %s.",file); 32:
return false; 33:
} 34: } 35: int countword(char* text) 36: { 37:
if(NULL != text) 38:
// 循环遍历整个字符数组,统计空格字符以及换行字符数 40:
int i = 0; 41:
int num = 0; // 空格或换行字符数 42:
while('\0' != text[i]) 43:
// 判断当前字符是否是空格换行字符, 45:
// 如果是,则统计在内 46:
if(' ' == text[i] // 空格 47:
|| '\n' == text[i]) // 换行 48:
++ // 总数加1 50:
++i; // 检查下一个字符 52:
return num+1; // 返回单词数目 54:
return 0; 59:
} 60: } 61: int main(int argc,char* argv[]) 62: { 63:
if(argc != 2) 65:
puts("ARGUMENS ERROR. eg. count demo.txt"); 67:
return 1; 68:
char text[1028*10] = ""; 70:
if(read(argv[1],text)) 71:
int n = countword(text); 73:
// 输出字符串中的单词数,也就是空格数加1 74:
printf("there is(are) %d word(s) in the \"%s\"",n,argv[1]);
return 0; 79: }然后,用gcc countword.c –o countword.exe将其编译成countword.exe应用程序,并用下面的命令统计一篇文章的单词数:countword.exe demo.txt这样,我们就可以用这个程序统计一篇英文文章中的单数了,再也不用一个个数的头晕眼花了。这正是体现了程序的作用,帮助人类又快又好地完成一些繁琐而有规律的工作。 可是,当用过一段时间后,我们却发现程序统计的结果并不是那么准确,有时会多统计几个单词,这又是为什么呢?这个新问题又该如何解决呢?欲知后事如何,且听下回分解。
恭喜您完成了该课时的学习,还有3课时未学,
该操作需要登录,请先或。
课程创建人
自 2004 年起连续被评为微软最有价值专家。著有《我的第一本C++书》《C程序设计伴侣》,并译有《C++11 FAQ中文版》。乐于帮助他人学习C/C++语言。
课程最新笔记
程序较易懂,使用两个嵌套的While循环实现连续猜数和重复游戏,同时使用了两个Break语句在条件满足时退出内外循环,退...
课程最新问题
相关小组最新话题
学习路上要有伙伴同行!
每天同学们在这儿学习数万课时,登录后一起学习交流吧。
已有好知网帐号? 也可从合作网站帐号登录:数据结构课程设计+_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
数据结构课程设计+
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢请教统计一篇文章各个单词出现次数问题
[问题点数:40分,结帖人evanhu1978]
请教统计一篇文章各个单词出现次数问题
[问题点数:40分,结帖人evanhu1978]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。查看: 5207|回复: 7
阅读权限1UID253747函数0 关最后登录经验104 点在线时间0 小时VBA0 关分享记录好友技巧0 关相册主题段位0 段金币143 个积分104精华0帖子日志注册时间
幼儿园小班, 积分 104, 距离下一级还需 -4 积分
金币143 个积分104帖子
请教大家一个问题,如何使用excel统计一篇文章中攻击几种单词,每种单词分别出现了几次?例文:Much of the research behind this book has come from 20 years of visits to Japan and interviews in Toyota facilities there and in the United States. When I was asked to write this book, I immediately asked Toyota for support through additional interviews specifically focused on the Toyota Way. They graciously agreed. As it turned out, they had just launched their own internal version of the Toyota Way to keep the Toyota DNA strong as they globalize and entrust international team members to run subsidiaries. This was the pet project of Fujio Cho, President of Toyota Motor Company, who learned the Toyota Way from one of its inventors, Taiichi Ohno, and he agreed to a rare, personal interview. I asked him what was unique about Toyota s remarkable success. His answer was quite simple. The key to the Toyota Way and what makes Toyota stand out is not any of the individual elements.... But what is important is having all the elements together as a system. It must be practiced every day in a very consistent manner not in spurts. Over a one-year period I was able to interview over 40 Toyota managers and executives from manufacturing, sales, product development, logistics, service parts, and production engineering. I gathered over 120 hours of interviews, all transcribed. Included in these interviews were several former Toyota managers who left to apply what they learned to U.S. Companies and several suppliers to Toyota. I visited many Toyota plants, supplier plants, Toyota s sales offices, a parts distribution center, a supplied parts cross-dock, the Arizona proving ground, and the Toyota Technical Center. I have thought about what impact I would like to make on readers of The Toyota Way. First, I have had a special opportunity to get inside the culture of a unique and high performing company and wish to share my insights. Second, Toyota is a model to many companies throughout the world so I wish to provide a different look at what makes Toyota so successful. The fundamental insight I have from my studies of Toyota is that its success derives from balancing the role of people in an organizational culture that expects and values their continuous improvements, with a technical system focused on high-value-added flow. This leads to my third and more challenging goal: to help other companies learn from Toyota and themselves so they can continuously improve on what they do. To capture the complexity of the Toyota Way and the Toyota Production System (TPS), I divided the book into three parts. Part One introduces you to the present success and history of Toyota. It describes how TPS evolved as a new paradigm of manufacturing, transforming businesses across industries. As a way of showing the Toyota Way in action, you will see how the Toyota Way was applied to the development of the Lexus and the Prius. In Part Two I cover the 14 principles of the Toyota Way that I identified through my research. These key principles drive the techniques and tools of the Toyota Production System and the management of Toyota in general. The 14 principles are divided into four sections: 统计结果:
08:00 上传
如何使用excel统计单词种类及出现频率
单词种类是代表本篇文章一共有多少种单词,比如此篇文章一共有253种单词,没一个单词在文章中出现了几次,比如two出现了3次等等。有没有比较简单,快速,相对较准确的方法,谢谢大家。
[此贴子已经被作者于 8:02:39编辑过]
阅读权限1UID253747函数0 关最后登录经验104 点在线时间0 小时VBA0 关分享记录好友技巧0 关相册主题段位0 段金币143 个积分104精华0帖子日志注册时间
幼儿园小班, 积分 104, 距离下一级还需 -4 积分
金币143 个积分104帖子
这只是一个简单的例子,假如有一本书呢?10几万个单词,又如何统计?
阅读权限255UID11397函数0 关最后登录经验5676 点在线时间799 小时VBA0 关分享记录好友技巧0 关相册主题段位0 段金币1740 个积分5740精华10帖子日志注册时间
金币1740 个积分5740帖子
08:34 上传
[求助]如何使用excel统计单词种类及出现频率
阅读权限1UID253747函数0 关最后登录经验104 点在线时间0 小时VBA0 关分享记录好友技巧0 关相册主题段位0 段金币143 个积分104精华0帖子日志注册时间
幼儿园小班, 积分 104, 距离下一级还需 -4 积分
金币143 个积分104帖子
楼上的,你真是高手啊,但是word中将空格换成^p将所有单词排成一列,这个操作貌似只能进行几千个单词,如果一篇文章有10万个单词。就完蛋了。另外,excel也只有6万5前行而已,如何进行统计?
阅读权限10UID297117函数0 关最后登录经验2254 点在线时间4 小时VBA0 关分享记录好友技巧0 关相册主题段位0 段金币4582 个积分2254精华0帖子日志注册时间
初中1年级, 积分 2254, 距离下一级还需 246 积分
金币4582 个积分2254帖子
学习技巧的,搞一个VBA的
(13.16 KB, 下载次数: 32)
08:54 上传
点击文件名下载附件
[求助]如何使用excel统计单词种类及出现频率
别人笑我太疯癫,我笑他人看不穿。不见五陵豪杰墓,无花无酒锄作田。
阅读权限1UID253747函数0 关最后登录经验104 点在线时间0 小时VBA0 关分享记录好友技巧0 关相册主题段位0 段金币143 个积分104精华0帖子日志注册时间
幼儿园小班, 积分 104, 距离下一级还需 -4 积分
金币143 个积分104帖子
能否讲解一下您的编程思路呢?一个单元格最多可以输入多少单词?谢谢啊
阅读权限15UID147825函数1 关最后登录经验4828 点在线时间182 小时VBA1 关分享记录好友技巧14 关相册主题段位0 段金币1506 个积分5325精华0帖子日志注册时间
左手抓鼠右手揉猫
高中3年级, 积分 5325, 距离下一级还需 -25 积分
金币1506 个积分5325帖子
以下是引用lizhliang在 8:46:00的发言:楼上的,你真是高手啊,但是word中将空格换成^p将所有单词排成一列,这个操作貌似只能进行几千个单词,如果一篇文章有10万个单词。就完蛋了。另外,excel也只有6万5前行而已,如何进行统计?10万个单词也就是同样的操作做两次而已,或者改用2007版,够一百万个单词了。
我的目标是:把BT进行到底——追求另类解题思路!
阅读权限1UID569441函数0 关最后登录经验1 点在线时间0 小时VBA0 关分享记录好友技巧0 关相册主题段位0 段金币0 个积分1精华0帖子日志注册时间
幼儿园小班, 积分 1, 距离下一级还需 99 积分
金币0 个积分1帖子
jx1680000 发表于
楼主威武...想请问一下,中文的文章能按同样的方法统计词频吗?但是英文的每个词后都是空格,中文的只能改完标点后的地方有空格,能否帮忙解决这个问题?不胜感谢!
Powered by}

我要回帖

更多关于 数组实现栈 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信