选题4:“英文文章单词统计程序”的设计与实现
难度系数:7(仅用二叉排序树或STL实现)或者8(不借助STL,自定义二叉平衡树实现)
英文文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为“英文文章单词统计程序”。
英文小说存于一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计。
采用合适的算法,针对算法设计合理的数据结构,进行程序求解,要求:
1、书写思路分析,对使用的算法的核心部分的原理进行详细说明;
2、必要的时候结合图表、流程图(或伪代码)进行说明;
3、给出源代码清单,源代码清单必须要有一定量的注释;
4、在确保算法正确性的前提下,尽量使用面向对象思想,代码风格优良;
5、语言不限,如果采用C++实现,允许使用C++ STL,如果不使用STL,自行设计二叉平衡树或二叉查找树更好;
6、使用文件进行输入;
7、可以参考任何参考文献和网络资源,但不得照抄或找人代做,一旦发现,成绩以不及格记;
8、不能使用简单的朴素字符串匹配算法,必须使用时间效率更高的字符串匹配算法,否则成绩以不及格记。
#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;
}
没人能够解决这个问题吗,用二叉树排序c/c++
你这是直接要一个可以直接运行的程序吗
参考下https://blog.csdn.net/weixin_30599769/article/details/98917840
https://www.cnblogs.com/shaosks/p/5614026.html 简单,用python在这个基础上扩充一下就行了