社区
C++ 语言
帖子详情
编写一个程序,用于统计文件中单词的总数,不同单词的数目
nokia7600
2004-10-15 10:18:51
编写一个程序,用于统计文件中单词的总数,不同单词的数目。(假设输入文件中只包含字母和空格)
eg: I love Beijing and I love Shanghai.
单词总数:7
不同单词数目:5
...全文
2009
24
打赏
收藏
编写一个程序,用于统计文件中单词的总数,不同单词的数目
编写一个程序,用于统计文件中单词的总数,不同单词的数目。(假设输入文件中只包含字母和空格) eg: I love Beijing and I love Shanghai. 单词总数:7 不同单词数目:5
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yangfasheng
2004-10-16
打赏
举报
回复
typedef struct WORDNODE
{
char *word;
struct WORDNODE *next;
}WORDNODE;
Insert(WORDNODE *Link,char *word);//用一个单链表保存不同的单词,
//每插入一个单词都先进行比较,如果现在正要插入的单词在链表中不存在,
//则将其插入,并且 WordNum++
int main(int argc,char *argv[])
{
char s[]="Golden Global View";
char *d=" ";
char *p;
int AllWordNum=0;//所有单词个数
int WordNum=0;//不同单词个数
WORDNODE *Link=NULL;
p=strtok(s,d);
while(p)
{
AllWordNum++;
Insert(Link,p);
p=strtok(NULL,d);
}
输出所有单词个数:AllWordNum
输出不同单词个数:WordNum
return 0;
}
willko
2004-10-16
打赏
举报
回复
//应用了STL MAP,拿 ftkghost(小鹏) 大侠的修改的
#include<iostream>
#include<fstream>
#include<string>
#include<set>
using namespace std;
int main()
{
ifstream infile("data.dat");
string s;
set<string> sstr; //储存不重复的单词,然后只需知道这个集合的元素个数就可以求出“不同单词数目”
int i=0; //统计单词总数
while(true)
{
infile>>s;
if ( !infile ) //如果是文件尾结束循环
break;
else
{
cout<<s<<" ";
i++;
sstr.insert(s);
}
}
cout<<endl;
cout << "单词总数:" << i << endl;
cout << "不同单词数目:" << sstr.size() << endl;
cout << "回车键结束...";
cin.get();
return 0;
}
jf_zhang
2004-10-16
打赏
举报
回复
不懂,有些东西没见过,不知道是什么意思
malligator
2004-10-16
打赏
举报
回复
不知所云
能解释一下么?
willko
2004-10-16
打赏
举报
回复
#include<iostream>
#include<fstream>
#include<string>
#include<set>
using namespace std;
int main()
{
ifstream infile("data.dat");
string s;
set<string> sstr;
int i=0;
while(true)
{
infile>>s;
if ( !infile )
break;
else
{
cout<<s<<" ";
i++;
sstr.insert(s);
}
}
cout<<endl;
cout << "单词总数:" << i << endl;
cout << "不同单词数目:" << sstr.size() << endl;
cout << "回车键结束...";
cin.get();
return 0;
}
renheihei
2004-10-16
打赏
举报
回复
在这里,set 和 map 那个效率更高呢?
renheihei
2004-10-16
打赏
举报
回复
set用的好!
renheihei
2004-10-16
打赏
举报
回复
mark
lqw0205
2004-10-16
打赏
举报
回复
1.建表会不会开销太大了,能不能在原输入串中比较
2.从后往前找,因为通常一段话在谈一件事情,从前
往后和从后往前实现上没有很大差异,效率上却好
像要高点
Jinhao
2004-10-16
打赏
举报
回复
用std::set很好呀
ftkghost
2004-10-16
打赏
举报
回复
用链表解决碰撞
ftkghost
2004-10-16
打赏
举报
回复
可以建一个Hash表存放单词(以及单词出现次数)
chang5
2004-10-16
打赏
举报
回复
小弟正学stl ,练练手~~~~~~
chang5
2004-10-16
打赏
举报
回复
#pragma warning (disable:4786)
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
int main(int argv,char *argc[])
{
ifstream in;
string s;
map<string,int> m;
in.open(argc[1]);
if(!in) return 1;
while(in>>s){
m[s]++;
}
int sum=0;
map<string,int>::iterator p;
for(p=m.begin();p!=m.end();p++)
sum+=p->second;
map<string,int>::value_type
cout<<"File contains "<<sum<<" words"<<endl;
cout<<"Has "<<m.size()<<" different words."<<endl;
return 0;
}
antoniusguo
2004-10-16
打赏
举报
回复
用vector大概可以吧
只要是数组里有的就不加.没的就加进去,最后拿数组长度就行了
错了不管......
我只是来灌灌水
wxu2
2004-10-16
打赏
举报
回复
修正一下
if (x>=0 && n>0 )这句改成 if (x>=0)就可以了
如果数组维数计数为0,遍历数组的函数返回的时候直接返回-1
wxu2
2004-10-16
打赏
举报
回复
使用动态数组作为不同单词的列表
思路如下:
定义结构数组,数组维数计数器n置0
for (遍历所有单词)
{
获取一个单词c
X=调用一个遍历数组的函数,返回数组索引// 如果返回为-1则表示没找到
if (x>=0 && n>0 )
数组[X]->单词计数++
else
{
数组维数计数器n++
根据n 重新分配数组
数组[n]->单词=c
数组[n]->单词计数=1
}
}
ftkghost
2004-10-16
打赏
举报
回复
我的代码只是统计了单词个数,要统计不同的单词数
其实思想不复杂,但是要是文件中单词多一点,那上面的程序效率很低啊
OSNC_17
2004-10-16
打赏
举报
回复
willko的最好!
kobefly
2004-10-15
打赏
举报
回复
如果只要统计单词个数的话很简单的拉
strtok()函数就可以实现了
要统计相同单词的个数
还得比较一下
也不是很难拉
加载更多回复(4)
编写
一个
程序
,
用于
统计
文件
中
单词
的
总数
,
不同
单词
的
数目
。(假设输入
文件
中
只包含字母和空格)
练习题(要求使用伪代码给出算法):
编写
一个
程序
,
用于
统计
文件
中
单词
的
总数
,
不同
单词
的
数目
。(假设输入
文件
中
只包含字母和空格) eg: I love Beijing and I love Shanghai
单词
总数
:7
不同
单词
数目
:5
统计
使用的
单词
个数以及
不同
单词
的个数
使用Java语言
编写
的关于
统计
一段代码
中
所有
单词
总数
以及
不同
的
单词
数目
,并输出
不同
的
单词
符号
浪潮集团编程大赛初赛试题
A语言的标志符由
一个
或多个
单词
构成,首
单词
小写,后续
单词
首字母大写,
单词
之间无其他分隔符号,例如“longAndShor”。B语言的标志符全部为小写,
单词
之间用下划线“_”分隔,如“long_and_short”。 5. 具体题目...
模拟词法分析的过程,
编写
一个
程序
,
用于
统计
文件
中
单词
的
总数
模拟词法分析的过程,
编写
一个
程序
,
用于
统计
文件
中
单词
的
总数
,
不同
单词
的
数目
。(假设输入
文件
中
只包含字母和空格) eg: I love Dalian and I love DLUT
单词
总数
:7
不同
单词
数目
:5 #include <stdio.h> #...
c语言
统计
文件
字母数字,C语言:读取
一个
文件
,
统计
文件
中
英文
单词
的总
数目
,以及
不同
单词
出现的次数...
c语言读取
一个
文件
,
统计
文件
中
英文
单词
的总
数目
,以及
不同
单词
出现的次数#include#include#includetypedef struct Word{char s[20];int num;} Word; //s存储
一个
单词
,num表示
单词
个数("
单词
表成员")int main(){...
C++ 语言
65,184
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章