Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 103

Подсчитать количество каждого символа

12.10.2019, 19:58. Показов 5855. Ответов 21

Студворк — интернет-сервис помощи студентам
В файле закодирован текст, необходимо подсчитать и вывести сколько раз встречается каждый символ(пробелы тоже)


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<iostream>
#include <map>      // STL контейнер map
#include <cstdio>
#include <cstring>
#include <fstream>   //для работы с текстом
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    map <char, int> chars;// создаем контейнер
    map <char, int>::iterator begin, at, end;
 
    //char str[500];
    //cout << "Ввести строку:" << endl;
    ifstream file("4.txt");
 
    for (unsigned int i = 0; i < strlen(str); i++) {
        chars[str[i]]++;// считаем каждый символ
    }
 
    begin = chars.begin();
    end = chars.end();
    for (at = begin; at != end; at++) {
        cout << at->first << 't' << at->second << endl; // выводим результат
    }
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.10.2019, 19:58
Ответы с готовыми решениями:

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

Подсчитать количество вхождений каждого символа в строку
например у Вас есть строка: asddsg В выходной файле, куда Вы запишите результаты работы программы будет: a – 1 s – 2 d – 2 g – 1

Строка: После каждого символа А вставить пробел, и подсчитать количество символов B, стоящих между + и -
Помогите пожалуйста решить задачу. После каждого символа А вставить пробел, и подсчитать количество символов B, стоящих между + и - ...

21
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.10.2019, 20:26
Цитата Сообщение от Rita87 Посмотреть сообщение
C++
1
2
3
4
ifstream file("4.txt");
for (unsigned int i = 0; i < strlen(str); i++) {
* * * * chars[str[i]]++;// считаем каждый символ
* * }
что-то странное )

Может, например, как-то так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    std::map<char, int> mmm;
 
    std::ifstream file("4.txt");
    if(file.is_open())
    {
        while( !file.eof() ) ++mmm[file.get()];
 
        file.close();
    }
 
    for(auto iter = mmm.begin(); iter!=mmm.end(); ++iter)
    {
        std::cout << iter->first << " : " << iter->second << "\n";
    }
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
12.10.2019, 20:37
Цитата Сообщение от Rita87 Посмотреть сообщение
В файле закодирован текст, необходимо подсчитать и вывести сколько раз встречается каждый символ(пробелы тоже)
C++
1
2
3
4
5
6
7
8
        size_t symbs[256] = {0};
        auto str = (std::stringstream() << std::ifstream("4.txt").rdbuf()).str();
        for (auto ch: str)
            ++symbs[ch];
 
        for (int  i = 0, n = std::size(symbs); i < n; ++i)
            if (symbs[i] != 0 && isprint(i))
                std::cout << char(i) << ": " << symbs[i] << std::endl;
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 103
12.10.2019, 21:06  [ТС]
почему-то не работает

Добавлено через 2 минуты
вы используете переменные, которых у меня нет
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
12.10.2019, 21:12
Цитата Сообщение от Rita87 Посмотреть сообщение
почему-то не работает
Добавлено через 2 минуты
вы используете переменные, которых у меня нет
Странно. Библиотеки те же, какие ошибки?
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 103
12.10.2019, 21:15  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
std::map<char, int> mmm;
std::ifstream file("4.txt");
* * if(file.is_open())
* * {
* * * * while( !file.eof() ) ++mmm[file.get()];
file.close();
* * }
for(auto iter = mmm.begin(); iter!=mmm.end(); ++iter)
* * {
* * * * std::cout << iter->first << " : " << iter->second << "\n";
* * }
здесь пустая консоль выводится

Добавлено через 1 минуту
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
size_t symbs[256] = {0};
* * * * auto str = (std::stringstream() << std::ifstream("4.txt").rdbuf()).str();
* * * * for (auto ch: str)
* * * * * * ++symbs[ch];
for (int *i = 0, n = std::size(symbs); i < n; ++i)
* * * * * * if (symbs[i] != 0 && isprint(i))
* * * * * * * * std::cout << char(i) << ": " << symbs[i] << std::endl;
А здесь

Ошибка C2065 ch: необъявленный идентификатор task1
Ошибка C3536 str: не может использоваться до инициализации task1
Ошибка C2027 использование неопределенного типа "std::basic_stringstream<char,std::char_ traits<char>,std::allocator<char>>" task1
Ошибка C3312 не найдена вызываемая функция "begin" для типа "int" task1
Ошибка C3312 не найдена вызываемая функция "end" для типа "int" task1
Ошибка (активно) E0070 недопустимый неполный тип task1
0
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.10.2019, 21:16
Цитата Сообщение от kitsoRik Посмотреть сообщение
Странно. Библиотеки те же, какие ошибки?
Подозреваю "auto" ))

в моём без него, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    std::map<char, int> mmm;
    std::map<char, int>::iterator iter;
 
    std::ifstream file("4.txt");
    if(file.is_open())
    {
        while( !file.eof() ) ++mmm[file.get()];
 
        file.close();
    }
 
    for(iter = mmm.begin(); iter!=mmm.end(); ++iter)
    {
        std::cout << iter->first << " : " << iter->second << "\n";
    }
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 103
12.10.2019, 21:21  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
std::map<char, int> mmm;
* * std::map<char, int>::iterator iter;
std::ifstream file("4.txt");
* * if(file.is_open())
* * {
* * * * while( !file.eof() ) ++mmm[file.get()];
file.close();
* * }
for(iter = mmm.begin(); iter!=mmm.end(); ++iter)
* * {
* * * * std::cout << iter->first << " : " << iter->second << "\n";
* * }
код ведь не изменился? У меня просто пустая консоль всплывает, без ошибок, но и без решения
0
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.10.2019, 21:21
Цитата Сообщение от Rita87 Посмотреть сообщение
здесь пустая консоль выводится
а где твой файл?
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 103
12.10.2019, 21:21  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
а где твой файл?
в папке с программой
0
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.10.2019, 21:23
Цитата Сообщение от Rita87 Посмотреть сообщение
код ведь не изменился?
чуток изменился, но раз запускается - это не та проблема была.

Добавлено через 1 минуту
Цитата Сообщение от Rita87 Посмотреть сообщение
в папке с программой
а такое запусти
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    std::map<char, int> mmm;
    std::map<char, int>::iterator iter;
 
    std::ifstream file("4.txt");
    if(file.is_open())
    {
        while( !file.eof() ) //++mmm[file.get()];
        std::cout << char(file.get());
        file.close();
    }
 
    for(iter = mmm.begin(); iter!=mmm.end(); ++iter)
    {
        std::cout << iter->first << " : " << iter->second << "\n";
    }
- тоже пустая будет?
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 103
12.10.2019, 21:25  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
- тоже пустая будет?
да
0
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.10.2019, 21:28
Цитата Сообщение от Rita87 Посмотреть сообщение
да
Штирлиц, где пастор Шлаг?

Проверяй файл, должен лежать рядом с .cpp, в котором main, должен быть не пустым, на всякий случай должен быть сохранён и закрыт.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
12.10.2019, 21:29
Цитата Сообщение от Rita87 Посмотреть сообщение
А здесь
Ошибка C2065 ch: необъявленный идентификатор task1
Ошибка C3536 str: не может использоваться до инициализации task1
Просто подключи заголовки и всё
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
#include <sstream>
int main()
{
    size_t symbs[256] = {0};
    auto str = (std::stringstream() << std::ifstream("D:\\4.txt").rdbuf()).str();
    for (auto ch : str)
        ++symbs[ch];
 
    for (int i = 0, n = std::size(symbs); i < n; ++i)
        if (symbs[i] != 0 && isprint(i))
            std::cout << char(i) << ": " << symbs[i] << std::endl;
}
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 103
12.10.2019, 21:31  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
стор Шлаг?


Р?С╪Р°С?Р?С?С'Р? Р°С?С╪Рч С?Р°Р?С?.
- РёР?Р?С?, - С?РёС'Р?С"Р?Р? Р·РёС?С?С?Р+РёС'Рё С?Р?Р?С?Р?Р°Р?Рё, - Р°С'РёС?С?С┼С?С? РёР?С?С?С?С?Р°С?Р+, Р+Р?Р? Р?С<
С?С?С'РёС?С?Рч!
- С┼Р?С'Р+С?, - С╪С?РёР·РёС' С?С?С"С?Р?Р°С╪С?С?С:. - Р?С? С?С?Р?С?, РС?Р?Р>РёС:Р?С?, С?С?С?, С?С?С?Рё С"Р?Р?
РР?Р°С?С?С?Р?; С"С?С?РчР?С? С╪Р+РёС╪Р?С'С?Р°С< С╪ Р?Р?Р°С<С┼ аиС?С?С┼ Р?Р?С╪РР?С?С?Р?Р?С┼.
- Р?Р?С?Рї Р?РёС?, С?Р?С?С┼С?С'С?Рї, - Р?Р?Р°С?Р+РёС'С? С'Р?С?С?, - С?С┼С?С?С┼, Р?С? Р?С╪Р?РёР°С?С┼ Р?С?С"С%, С?С?С?С┼ С╪
Р?Р?С"Р?Р?.
С'Р?С?РёС?С? С"С<С'С? РР?С?РёР?С<; С?С?С"С?Р?Р°С╪С?С?С: С╪С?С' С╪ Р?С?С?С?С?Р? Р° Р?С?С'С?Р?С? С? Р?РёР·Р?РёР+С?С' С?С┼
С┼С?С╪Р?Р?С┼ С╪Р°С?С?РёР?С?С% С?С?С╪Р?С?Р?С?Р°С╪С?С?Р? С?Р?Р>С?. РёР?Р?Р?Р? С?С?РёС?С?С' РР? С'Р?С?РёС?С%С┼, С? Р?Р?С? Р°С<С?Р?РёС'С? С╪Р?
С?Р°Р?С?Рё.
РР?С?Р?С%С'С╪С% Р°С?Р?С?С?. Р° Р?С?Р?С? С┼С?Р?С?Р?С? РС'РёС┼С% Р?С"Р?аиР?С?С'Р? Р°С?С╪Рч С?Р?С┼. С?С?РёС╪Р?С<С: С?С<С┼
Р°С?С'С╪С% Р?РёС? С?С?Р?Р°С'С?Р?. С╪Р?С?С?С'С< Р?С?С?Р>РёС'С?, С╪С<РРёС'С?С╪Рч, РС<С'РёР?Р>С?С? С"С?С?Р°Р?С< С╪Р?РёС'С? РРёС?РёР?Рч,
С?РёР·С?РёС'С╪С% С?РёС'Р?С"Р?С<С: Р°Р?РС'Рч С? С?С?С?С?С?: "Р?Р?С?С?С┼, РР?С┼Р?Р?С?Р?С?, РР?С┼Р?Р?С?Р?С?". - С?РёС? Р?С? Р?РёС?,


вот такое теперь
0
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.10.2019, 21:33
Цитата Сообщение от Rita87 Посмотреть сообщение
вот такое теперь
т.е. файл нашелся? Возвращаемся к первым вариантам, раз файл уже где надо)
1
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 103
12.10.2019, 21:35  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
т.е. файл нашелся? Возвращаемся к первым вариантам, раз файл уже где надо)
я? : 28
? : 125
' : 264
? : 391
" : 84
: : 55
┼ : 152
╪ : 256
? : 145
% : 94
? : 345
< : 95
? : 3
? : 229
? : 167
? : 45
° : 222
+ : 64
? : 464
? : 47
? : 83
ч : 72
 : 163
· : 98
ё : 380
№ : 2
є : 5
> : 11
? : 249
? : 218
? : 60
ї : 14
Р : 2152
С : 2478
я : 1

: 94
: 1294
! : 8
" : 6
, : 125
- : 93
. : 95
1 : 2
: : 4
; : 7
? : 11



Не распознаёт, буквы русские у меня
0
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.10.2019, 21:38
Цитата Сообщение от Rita87 Посмотреть сообщение
Не распознаёт, буквы русские у меня
Это уже ерунда, зато работает. Сейчас кину ссылку на страничку тут про кодировки в консоли.

Добавлено через 2 минуты
Русские шрифты в консоли
Тут в шапке разбираются разные варианты для кириллицы. Извиняюсь что ссылкой, но у тебя в начале уже было
Цитата Сообщение от Rita87 Посмотреть сообщение
C++
1
setlocale(LC_ALL, "rus");
- не работает чтоль?

Цитата Сообщение от Rita87 Посмотреть сообщение
С : 2478
это, наверное, большой файл?
1
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 103
12.10.2019, 21:40  [ТС]
Цитата Сообщение от Folian Посмотреть сообщение
не работает чтоль?
нет
0
Гвоздь Задиров
 Аватар для Folian
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
12.10.2019, 21:45
Лучший ответ Сообщение было отмечено Rita87 как решение

Решение

Цитата Сообщение от Rita87 Посмотреть сообщение
нет
Проверь, для начала, на файле поменьше, но на латинице. Убедись что всё работает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2019, 21:45
Помогаю со студенческими работами здесь

Подсчитать число вхождений каждого символа в файл
Дан символьный файл f Подсчитать число вхождений в файл каждой из букв a, b, c, d, e, f и вывести результат в виде таблицы a-na, b-nb,...

Как подсчитать вероятность появления каждого символа в тексте.
Как подсчитать вероятность появления каждого символа в тексте. Например дана предложение: The method was attributed to Fano, who later...

Определить количество вхождений каждого символа
cout &lt;&lt; &quot;Введите строку: &quot;; cin.get(); getline(cin, str1); if (str1.empty() == true) { cout &lt;&lt;&quot; Ошибка!Вы ничего не...

Посчитать количество вхождений в текст каждого символа
Нужна программа, которая считает количество вхождений в текст каждого символа. Вот мой код: #include &lt;iostream&gt; #include...

Определить количество вхождений каждого символа в строке
Помогите решить задачу! Вот условие: После ввода с клавиатуры произвольного строки выдать на экран протокол о количестве вхождений...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru