◆编程:实现读取一篇英文文本文件in.txt,统计其中各个单词出现的频率,把统计结果输出到out.txt文件中。
发布网友
发布时间:2022-05-23 19:21
我来回答
共2个回答
热心网友
时间:2023-11-13 22:37
思路:
1)用结构体数组存储 “单词”以及“出现次数”
typedef struct FileList
{
char name[20 + 1];//单词名
int num;//单词出现个数
};
2)读取文章内容到buf(buf[1024])数组中,然后对buf数组内容以空格(' ')为分隔符进行分割。这里可用(sccanf()函数实现,或者strtok()函数实现,个人建议用前者),将分割的单词存放在结构体数组中,以及单词个数。
3)至于排序,可用qsort进行排序。
热心网友
时间:2023-11-13 22:37
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class danci
{
public:
string name;
int num;
danci(){num=0;name="";};
};
void readfile(danci*&inchar,int &counter)
{
ifstream infile("in.txt");
if(!infile) {cout<<"cannot open!"<<endl;return;}
while(infile)
{
string temp;
infile>>temp;
int i=0;
for( ;i<counter;i++)
{
if(temp==inchar[i].name) { inchar[i].num++;break;}
}
if(i==counter&&inchar[i].name!=temp)
{
inchar[counter].name=temp;
inchar[counter].num++;
counter++;
}
};
infile.close();
}
void outfile(danci*inchar,int counter)
{
ofstream outfile("out.txt");
for(int i=0;i<counter;i++)
outfile<<"单词"<<inchar[i].name<<endl<<"出现次数"<<inchar[i].num<<endl;
}
void main()
{
danci*inchar=new danci[1000];
int counter=0;
readfile(inchar,counter);
outfile(inchar,counter);
}追问这位高手非常感谢,能否用C语言的链表,顺序表,堆栈,或二叉树完成,我再加分!