我需要找到 -所有单词的平均长度 -最短和最长的字长;和 -多少个字 在单独的文本文件中,使用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进入桌面为止
答案 0 :(得分:2)
好吧,用c ++代替FILE*
而不是使用std::ifstream
,std::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.
请注意,>>
运算符将行尾视为空格,而只是忽略它(它就像单词分隔符一样)。