Форум программистов, компьютерный форум CyberForum.ru

Посчитать сколько раз встречается каждая буква в тексте - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
S_O_A_D
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 48
11.06.2013, 21:38     Посчитать сколько раз встречается каждая буква в тексте #1
Здравствуйте! А задача звучит так: есть массив с буквами, и нужно отсортировать таким образом, чтобы в начале массива расположились буквы, которые чаще всего встречаются и т.д., то есть в порядке их частоты использования.

Помогите реализовать, что-то голова вовсе не варит)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2013, 21:38     Посчитать сколько раз встречается каждая буква в тексте
Посмотрите здесь:

C++ Посчитать сколько раз встречается каждая буква(русский ввод)
C++ Массивы. Определить, сколько раз каждая буква латинского алфавита встречается в строке
Вывести на экран сколько раз встречается каждая цифра в массиве C++
C++ Посчитать частоту с которой каждая буква встречается
C++ Посчитать, сколько раз встречается каждая цифра в введенном с клавиатуры числе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
11.06.2013, 22:14     Посчитать сколько раз встречается каждая буква в тексте #2
С помощью STL можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <unordered_map>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main()
{
    string text = "jgjksdghkjsdhgkjadgbasguebueyrgbfyuyfdsvyatfs";
    unordered_map<char, int> chars;
 
    for (auto c : text) ++chars[c];
 
    auto comp = [&chars](char c1, char c2)
        { return chars[c1] > chars[c2]; };
 
    sort( begin(text), end(text), comp );
 
    cout << text;
    return 0;
}
http://ideone.com/odK1Wg
Особого отличия для массива символов не будет.
S_O_A_D
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 48
11.06.2013, 22:21  [ТС]     Посчитать сколько раз встречается каждая буква в тексте #3
А можно как-то проще? Просто у меня VS2010 и половину функций просто не работает..
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
11.06.2013, 22:40     Посчитать сколько раз встречается каждая буква в тексте #4
вот так должно заработать в старом С++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <map>
#include <string>
#include <algorithm>
 
using namespace std;
 
map<char, int> chars;
 
bool comp(char c1, char c2)
{ return chars[c1] > chars[c2]; };
 
int main()
{
    string text = "jgjksdghkjsdhgkjadgbasguebueyrgbfyuyfdsvyatfs";
        for (int i = 0; i != text.size(); ++i)
                ++chars[ text[i] ];
 
        sort( text.begin(), text.end(), comp );
 
        cout << text;
    return 0;
}
S_O_A_D
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 48
11.06.2013, 22:44  [ТС]     Посчитать сколько раз встречается каждая буква в тексте #5
Спасибо! Теперь все заработало) У меня еще есть пару вопросов: не раз встречал вот такой код:"++chars[ text[i] ];" что означает в данном случае этот инкремент? И можно еще короткий алгоритм к вашей программе?)
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
11.06.2013, 22:58     Посчитать сколько раз встречается каждая буква в тексте #6
chars - это map, соответственно интовое значение с ключом text[i] инкрементируется

Добавлено через 9 минут
имеется, значит map -a способная хрнить элементы только с уникальным ключом, проходим по строке и подсчитываем количество вхождений каждой буквы в стрроке - сии результаты заносятся в map в виде пары "буква" - "количество вхождений ", затем сортируем строку по критерию количества вхождений в строку
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2013, 22:59     Посчитать сколько раз встречается каждая буква в тексте
Еще ссылки по теме:

C++ Определить сколько раз в тексте встречается буква, вводимая с клавиатуры
C++ Определить сколько раз встречается каждая цифра в текстовом массиве
(Только простой вариант)Дано слово и буква.Сколько раз эта буква встречается в слове C++

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

Или воспользуйтесь поиском по форуму:
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
11.06.2013, 22:59     Посчитать сколько раз встречается каждая буква в тексте #7
1)Последовательно проходим по строке и считаем сколько раз встречается каждый символ. Сохраняем данные в ассоциативном контейнере (ключ (символ) - данные (сколько раз встречается))
2)Сортируем символы в строке в зависимости от того как часто они встречаются (для этого то и писалась функция comp)
Yandex
Объявления
11.06.2013, 22:59     Посчитать сколько раз встречается каждая буква в тексте
Ответ Создать тему
Опции темы

Текущее время: 17:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru