Проанализировать файл с текстом. Определить частоту повторяемости каждой буквы алфавита и каждой цифры в тексте

Проанализировать файл с текстом. Определить частоту повторяемости каждой буквы алфавита и каждой цифры в тексте.
Написать код на C++.

#include <fstream>
#include <iostream>
using namespace std;
int main() {
    int n[10] = { 0 }, e[26] = { 0 };
    ifstream f("input.txt");
    char c;
    while (!f.eof() && f >> c)
        if (c >= '0' && c <= '9')
            ++n[c - '0'];
        else if (c >= 'a' && c <= 'z')
            ++e[c - 'a'];
        else if (c >= 'A' && c <= 'Z')
            ++e[c - 'A'];
    f.close();
    for (int i = 0; i < 10; cout << i << ": " << n[i++] << '\t');
    for (int i = 0; i < 26; cout << (char)('a' + i) << ": " << e[i++] << '\t');
    system("pause");
    return 0;
}

Помогите пожалуйста модернизировать код к курсовой

Это как?)

Это наверное так что, код в 13 строк для курсовой явно маловато… :slight_smile:
КириллK1MeR, Вы хотя бы тему и поставленную задачу озвучте… Т. к. то что указано в первом посте больше на лабораторную работу похоже…

Ну это от вуза зависит что там как называют.


После модернизации стало еще короче :slight_smile:

#include <cctype>
#include <fstream>
#include <iostream>
#include <map>

int main() {
    std::map<char, int> charFrequencyMap;
    std::ifstream fs("input.txt");
    char ch;
    while (fs.get(ch)) {
        if (std::isalnum(ch)) {
            charFrequencyMap[char(std::tolower(ch))]++;
        }
    }
    for (const auto& it : charFrequencyMap) {
        std::cout << it.first << " - " << it.second << std::endl;
    }
    return 0;
}

А, еще если найти просят частоту, а не количество, то скорее всего надо в конце разделить на количество всех букв+цифр.

Можете пожалуйста частоту сделать?

Так а проблема в чем?
Надо каждое число в конце

(либо просто при выводе, либо в map изменить, как угодно)

Для получения количества можно во время чтения файла считать подходящие символы (те, что в map добавляются).