计算本地文本文件中单词的平均长度

时间:2019-03-05 19:39:28

标签: c++

我需要找到 -所有单词的平均长度 -最短和最长的字长;和 -多少个字 在单独的文本文件中,使用c ++。该文件中有79个单词,称为“ test.txt”。

我到目前为止有什么

#include <bits/stdc++.h> 
#include <cstdio> 


using namespace std; 

int main() 
{ 
    FILE* fp; 
    char buffer[100]; 

    fp = fopen("test.txt", "r"); 
    while (!feof(fp)) // to read file 
    { 
        // fucntion used to read the contents of file 
        fread(buffer, sizeof(buffer), 100, fp); 
        cout << buffer; 
    } 


    return 0; 
}

所有这些操作就是打印出文件中的单词。

我正在使用在线编译器,直到今天晚些时候可以使用Visual Studio 2017进入桌面为止

3 个答案:

答案 0 :(得分:2)

好吧,用c ++代替FILE*而不是使用std::ifstreamstd::string word;变量和格式化的文本提取operator>>()可以循环读取文件中的单个单词:

std::ifstream infile("test.txt");
std:string word;
while(infile >> word) {
}

计算从文件中读取的每个单词的变量int wordCount;

int wordCount = 0;
while(infile >> word) {
    ++wordCount;
}

总结另一个变量int totalWordsCharacters;中已读单词的字符长度(您可以使用std::string::length()函数确定单词中使用的字符数)。

int totalWordsCharacters = 0;
while(infile >> word) {
    totalWordsCharacters += word.length();
}

阅读完该文件后,您可以通过除以

轻松计算平均单词长度
int avgCharacterPerWord = totalWordsCharacters / wordCount;

Here's a complete working example,唯一的区别是输入文件格式中的'\n'被一个简单的空白字符(' ')取代。

答案 1 :(得分:0)

如果要在所有单词之间取平均值,则必须将所有长度加在一起,然后除以文件中的单词数(您说的是79个单词)

但是,如果您想获得最短单词和最长单词之间的平均值,则必须首先获取这些单词。

您可以通过遍历所有单词的两个计数器来简单地做到这一点。如果第一个计数器的长度小于第一个计数器的长度,则将其设置为当前字的长度。如果第二个计数器的长度大于第二个计数器,则将其设置为当前单词的长度。

然后,您将这两个计数器相加并除以2。

答案 2 :(得分:0)

您的问题是您正在编写C代码。这使问题更加棘手。

在C ++中,使用>>运算符可以很容易地从文件中读取单词列表。

std::ifstream  file("FileName");
std::string    word;
while(file >> word)
{
    // I have read another word from the file.
    // Do your calculations here.
}
// print out your results here after the loop.

请注意,>>运算符将行尾视为空格,而只是忽略它(它就像单词分隔符一样)。