我有一个程序要制作,我们被要求计算每个字母在文件中出现的次数。我们也要数单词。
文件显示为:
hello word all is well.
我想出了如何对单词进行计数,但是我不知道如何对频率进行计数。从昨天开始,我一直在这样做,而且我什至不知道如何开始。
#include <iostream>
#include <fstream>
#include <cctype>
#include <cstring>
using namespace std;
const int SIZE = 78;
void wordcount(fstream& in, char character[], int& counter);
void freq(fstream& in, char character[], int& counter);
int main()
{
char character[SIZE];
int counter = 0;
fstream in;
wordcount(in, character, counter);
return 0;
}
void freq(fstream& in, char character[], int& counter)
{
}
void wordcount(fstream& in, char character[], int& counter)
{
int word = 0;
counter = 0;
in.open("mytext.dat");
{
while (!in.eof() && counter < SIZE)
{
in.get(character[counter]);
if (character[counter] == ' ' || character[counter -1] == '.')
{
++word;
}
counter++;
}
cout << word << " words" << endl;
//freq(in, character, counter);
in.close();
}
}
答案 0 :(得分:-2)
如何计算字母的出现频率?
让我们想象一下,我们只想计算元音的频率。因此,我们使用一个数组(或某个容器)。
const size_t NO_OF_VOWELS = 5;
// array to hold count of each vowel in file
// and initialized to 0
int vowels[NO_OF_VOWELS] = {0};
数组中的每个位置代表一个元音,所以
文件中的第一个字母,即元音为e-,因此位置索引1处的数组元素递增。下一个元音为o-,因此位置索引3处的数组元素增加。 依此类推。
元音可以很简单地编程,但是当要计数的字母更多时,了解
您可以使用
来获得小写字母的字母位置 alpha_position = letter - 'a';
实现数组的一种较不常见的方法-使数组足够大以容纳ASCII字符集,并使用字符值作为数组的位置索引。