选题4:“英文文章单词统计程序”的设计与实现
难度系数:7(仅用二叉排序树或STL实现)或者8(不借助STL,自定义二叉平衡树实现)
英文文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为“英文文章单词统计程序”。
英文小说存于一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计。
采用合适的算法,针对算法设计合理的数据结构,进行程序求解,要求:
1、书写思路分析,对使用的算法的核心部分的原理进行详细说明;
2、必要的时候结合图表、流程图(或伪代码)进行说明;
3、给出源代码清单,源代码清单必须要有一定量的注释;
4、在确保算法正确性的前提下,尽量使用面向对象思想,代码风格优良;
5、语言不限,如果采用C++实现,允许使用C++ STL,如果不使用STL,自行设计二叉平衡树或二叉查找树更好;
6、使用文件进行输入;
7、可以参考任何参考文献和网络资源,但不得照抄或找人代做,一旦发现,成绩以不及格记;
8、不能使用简单的朴素字符串匹配算法,必须使用时间效率更高的字符串匹配算法,否则成绩以不及格记。
“英文文章单词统计程序”的设计与实现
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- 眀澤 2021-12-28 16:22关注
#include<iostream> #include<string> #include<map> #include<fstream> using namespace std; int main(void) { fstream file_in("c://in.txt",ios::in); //文章 fstream file_out("c://out.txt",ios::out); //将文章中的其他字符转换为空格 if(!file_in || !file_out) { cout<<"Open file error!"<<endl; } string line_temp; while(getline(file_in,line_temp))//读出一行 { int length=line_temp.length();//字符串的长度 for(int i=0;i<length;i++) { if((line_temp[i]<65) || (line_temp[i]>90 && line_temp[i]<97) || line_temp[i]>122)//处理除字母之外的其他字符 { line_temp[i]=' ';//转换为空格 } } file_out<<line_temp<<endl;//输出到新文件中 } file_in.close();//关闭文件 file_out.close();//关闭文件 map<string,int> m_word; //map统计并且自动排序 fstream file_word("c://out.txt",ios::in);//打开处理后的文章 string temp;//存放读出的字符串 while(!file_word.eof())//如果文件没有结束,继续循环 { file_word>>temp; m_word[temp]++; } //输出 map<string,int>::iterator iterator; for(iterator=m_word.begin();iterator!=m_word.end();iterator++) { cout<<iterator->first<<" "<<iterator->second<<endl; } file_word.close();//关闭文件 return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥50 potsgresql15备份问题
- ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
- ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
- ¥60 pb数据库修改与连接
- ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
- ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
- ¥20 神经网络Sequential name=sequential, built=False
- ¥16 Qphython 用xlrd读取excel报错
- ¥15 单片机学习顺序问题!!
- ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上