5-20 词频统计   (30分)

请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。

所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。

输入格式:

输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。

输出格式:

在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。

随后按照词频递减的顺序,按照词频:单词的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。

输入样例:

This is a test.The word "this" is the word with the highest frequency.Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee.  But this_8 is different than this, and this, and this...#
this line should be ignored.

输出样例:(注意:虽然单词the也出现了4次,但因为我们只要输出前10%(即23个单词中的前2个)单词,而按照字母序,the排第3位,所以不输出。)

23
5:this
4:is

最后一个测试点过不了,听说是哈利波特的节选,不太懂为什么,求大神解答。

还有isdigit和isalpha函数居然用了就WA,不知是为什么。。。

用了map,学会了利用vector对map根据value值排序。。然而却没大用到哈希。。。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cctype>
#include <vector>
#include <map>
using namespace std;
bool cmp(pair<string, int> a, pair<string, int> b) {if(a.second != b.second) return a.second > b.second;else return a.first < b.first;
}
vector<pair<string, int> > v;
map<string, int> m;
int main(){char str[100];string word;map<string, int>::iterator it;int start = 0;char ch;while(ch = getchar()) {if(ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' || ch >= '0' && ch <= '9' || ch == '_') {if(ch >= 'A' && ch <= 'Z') ch = ch - 'A' + 'a';str[start++] = ch;}else if(start > 0) {if(start >= 15) start = 15;str[start] = 0;start = 0;word = str;it = m.find(word);if(it != m.end()) {(it->second)++;}else {m[word] = 1;}}if(ch == '#') break;}for(it = m.begin(); it != m.end(); it++) {v.push_back(make_pair(it->first, it->second));}sort(v.begin(), v.end(), cmp);vector<pair<string, int> > :: iterator itv;cout << v.size() << endl;int ans = v.size() / 10;for(itv = v.begin(); itv != v.begin() + ans; itv++) {cout << itv->second << ':' << itv->first << endl;}return 0;}

数据结构课设 词频统计相关推荐

  1. 那些年,我的数据结构课设,现在满满的回忆!(现如今身处内卷之中,已经很难出现当初那份乐趣了)

    一.看到这个图标很有感觉 距离当初完成数据结构课设已经过去很久很久了,当初由于U盘失踪,也丢失了很多宝贵的东西,我也伤心的好久`(>﹏<)′!不过最近找到了失散多年的亲兄弟,打开U盘,感概 ...

  2. 南京航空航天大学2020数据结构课设

    南京航空航天大学2020数据结构课设 目录 1.系统进程设计 2.迷宫问题 3.家谱管理系统 4.Huffman编码与解码 5.地铁修建 6.公交线路提示 7.B-树应用 8.排序算法比较 9.数字排 ...

  3. 学生搭配问题数据结构报告c语言,数据结构课设学生搭配问题

    数据结构课设学生搭配问题 数 据 结 构 课程设计报告书 班级 学号 专业 姓名 课题描述: 一. 需求分析: 1. 设计内容 一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编 ...

  4. 数据结构课设_网页形式的景区导游

    一.前言 欢迎大家来到这里~~ 1.这次数据结构课设,笔者的题目是网页形式的导航系统. 2.数据结构方面应用了链表存储商品信息.图来存储景点和路径信息.在图的广度优先中还用到了队列: 3.具体的算法有 ...

  5. 神秘国度的爱情故事 数据结构课设-广州大学

    神秘国度的爱情故事 数据结构课设-广州大学 ps:本次课设程序不仅需要解决问题,更需要注重代码和算法的优化和数据测试分析      直接广度优先实现的方法时间复杂度为O(QN),优化后的方法是lca+ ...

  6. 模拟浏览器操作程序(数据结构课设)

    文章目录 前言 一.题目 二.系统设计 2.1 功能模块图 2.2 主要功能函数 三.问题分析 四.实验结果及分析 五.源码 总结 前言 20级cqut的别抄! 一.题目  模拟浏览器操作程序:标准的 ...

  7. 背包问题求解(数据结构课设)

    文章目录 前言 一.题目 二.功能模块图 三.问题分析 四.实验结果及分析 五.源码 总结 前言 20级cqut的别抄! 一.题目  背包问题的求解:假设有一个能装入总体积为T的背包和n件体积分别为w ...

  8. 华南农业大学课设——数据结构课设、Java课设、操作系统课设

    文章目录 缘起 大二上-数据结构课设(高校教学管理系统)-C++.Qt 视频演示 感想 大二下-Java课设(流程图绘制程序)-JavaFX 视频演示 感想 大三上-操作系统课设(模拟磁盘文件系统实现 ...

  9. 数据结构课设——汉诺塔游戏演示

    源代码下载地址:数据结构课设--汉诺塔游戏演示 一. 问题描述 汉诺塔游戏问题中的数据元素具有如下形式: lchild:左孩子结点 rchild:右孩子结点 num:该移动步骤需要移动的盘子的编号 s ...

最新文章

  1. R语言-查看对象类型和长度
  2. JetsonTX2上安装tensorflow的心酸史
  3. MySQL 5.6通过MMM实现读写分离的高可用架构
  4. 效率低下?是管理者无能?还是“太宽容”?
  5. scala Akka并发编程介绍
  6. 微信小程序css3动画怎么写,微信小程序动画课程-通过wxss(css)来实现-animation 属性...
  7. httpHandlers
  8. socket模拟http的登陆_python模拟登陆知乎(最新版)
  9. Lync 小技巧-14-为用户启用统一的联系人存储库-Lync-无联系人
  10. 图解设计模式:工厂类
  11. 【FeignClient报错】Cannot deserialize value of type``from Object value (token `JsonToken.START_OBJECT`)
  12. Win7 远程桌面连接不上
  13. IdentityServer4(七):Consent授权页支持
  14. SSM框架医院信息管理系统-患者医生考勤管理挂号管理-病房管理-科室管理- (idea开发javaweb-php-asp.netC#-j2ee-springboot)
  15. FME 2011预览:新特性 IFMEWorkspaceRunner
  16. 合成分红游戏源码_旅行世界遛狗养狗恐龙源码,分红龙源码、红包龙、合成龙...
  17. 6846. 【2020.11.02提高组模拟】旅人1970
  18. 天翼4gdongle linux,SIM7600X 4G DONGLE用户手册 (重定向自SIM7600CE-CNSE 4G DONGLE)
  19. 基于U3D的VR开发教程:(2)Vive详解
  20. weixuan -奥利给turtle

热门文章

  1. 帝国理工学院计算机科学夲科生数,帝国理工学院计算机科学信息汇总,无背景要求,不需要GRE...
  2. 帝国理工学院计算机排名,帝国理工学院计算机排名和学习计划以及课程模块
  3. 3.11 使用污点修复画笔工具去除面部皱纹 [Ps教程]
  4. 集美大学计算机专业2020,2020年集美大学计算机应用技术考研调剂
  5. LKT6830C安全MCU(一):资源介绍
  6. 【vue create】一.使用vue creat搭建项目
  7. 疯狂Python讲义学习笔记(含习题)之 类和对象
  8. html5新标签和css3的新属性
  9. 经典同态加密算法(加法与乘法)
  10. flash 怎么擦掉fpga_SPI FLASH学习笔记(三)擦除操作