Как посчитать частоту каждой буквы из файла? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть программа для создания, и нас просят подсчитать, сколько раз каждая буква появляется в файле.Мы также должны посчитать слова.

Файл гласит:

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();
    }
}

1 Ответ

0 голосов
/ 02 июля 2019

Как считать частоту букв?

Представим, что мы просто хотим посчитать частоту гласных.Поэтому мы используем массив (или некоторый контейнер).

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};

Каждая позиция в массиве представляет гласную, поэтому

  • index 0 предназначен для
  • индекс 1 для e
  • индекс 2 для i
  • индекс 3 для o
  • индекс 4 для u

первая буквав файле это гласный - e - поэтому элемент массива с индексом позиции 1 увеличивается.Следующий гласный - o, поэтому элемент массива с индексом позиции 3 увеличивается.И т. Д.

Гласные можно запрограммировать довольно просто, но когда нужно подсчитать больше букв, полезно знать, что

  1. char - целочисленное значение - поэтому каждыйбуква имеет целочисленное значение
  2. char может использоваться в целочисленной арифметике
  3. заголовок cctype объявляет такие функции, как isalpha
  4. , вы можете получить позицию валфавит строчной буквы, используя

    alpha_position = letter - 'a';

Менее распространенный способ реализации массива - это иметь большой массивдостаточно для набора символов ASCII и использования значения символа в качестве индекса позиции массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...