Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
#1

Найти в строке символы, встречающиеся ровно k раз - C++

08.07.2015, 10:32. Просмотров 386. Ответов 9
Метки нет (Все метки)

Помогите решить задачу с использованием множества: в данной строке те символы, которые встречаются ровно k раз.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2015, 10:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти в строке символы, встречающиеся ровно k раз (C++):

Выведите все строчные гласные латинские буквы, встречающиеся в данной строке ровно один раз - C++
Разработка алгоритмов программ с использованием дружественных функций и классов. (Выведите все строчные гласные латинские буквы,...

Выведите все строчные гласные латинские буквы, встречающиеся в данной строке ровно один раз. - C++
Выведите все строчные гласные латинские буквы, встречающиеся в данной строке ровно один раз.

Найти символы встречающиеся в тексте только один раз - C++
Помогите заданием , плиз) вот условие задание: 15.Задан массив из k символов латинского алфавита. Вывести на экран в алфавитном...

Удалить из массива все элементы, встречающиеся ровно n раз - C++
1. Дан целочисленный массив ,состоящий из n элементов. Удалить из массива все элементы ,встречающиеся ровно n раз. 2. Дана целочисленная...

Найти и вывести на консоль символы, наиболее часто встречающиеся в заданной строке - C++
В тексте найти и напечатать символы, встречающиеся наиболее часто. Помогите !

Найти в строке букву Х, и посчитать сколько раз повторяются символы + и - - C++
n-натуральное число, даны символы S1,S2,...Sn. Найти в данном символе букву Х, и посчитать сколько раз повторяются символы + и -

9
dcStep
39 / 39 / 20
Регистрация: 13.04.2015
Сообщений: 83
08.07.2015, 13:16 #2
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 <algorithm>
#include <iostream>
#include <unordered_map>
 
int main() {
    int k;
    std::string text = "Some text, some number 42, some signs: '!@#$^&*_+'";
    std::unordered_map<char, unsigned int> counts;
 
    std::cin >> k;
 
    std::for_each(std::begin(text), std::end(text), [&counts](char c) {
        counts[c]++;
    });
 
    for(auto& kv: counts) {
        if ( k == kv.second ) {
            std::cout << kv.first << ": " << kv.second << std::endl;
        }
    }
 
    return 0;
}
Код
input:
4

output:
s: 4
m: 4
2
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
08.07.2015, 14:26 #3
dcStep, расскажите пожалуйста почему unordered_map, а не map, и что это такое
0
dcStep
39 / 39 / 20
Регистрация: 13.04.2015
Сообщений: 83
08.07.2015, 15:07 #4
Цитата Сообщение от Krock21rus Посмотреть сообщение
расскажите пожалуйста почему unordered_map
В нём поиск элементов происходит быстрее (если нет коллизий) в отличии от map (если будут коллизии, то map быстрее).
http://stackoverflow.com/a/13799886
Цитата Сообщение от Krock21rus Посмотреть сообщение
что это такое
Примерно то же, что и обычный map, но со своими плюсами (быстрый поиск) и минусами (нельзя сортировать).
unordered_map

Добавлено через 10 минут
Основной причиной почему я выбрал его - порядок "ключей" был неважен.
1
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
09.07.2015, 10:07  [ТС] #5
Цитата Сообщение от dcStep Посмотреть сообщение
for(auto& kv: counts) {
Подчеркивает kv и пишет "Невозможно вывести тип авто(требуется инициализатор)

Что делать?

Добавлено через 51 минуту
Пожалуйста! Очень нужно!
0
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,292
Завершенные тесты: 3
09.07.2015, 10:08 #6
Алина1234, у вас старый компилятор, думаю, лямбда-выражение тоже не пройдет. Вот подходящая интерпретация программы scStep:
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 <algorithm>
#include <iostream>
#include <unordered_map>
 
typedef std::unordered_map<char, unsigned> type;
 
int main() 
{
    int k;
    std::string text = "Some text, some number 42, some signs: '!@#$^&*_+'";
    type counts;
 
    std::cin >> k;
 
    for (int i = 0; i < text.length(); ++i)
        counts[text[i]]++;
 
    for (type::const_iterator i = counts.cbegin(); i != counts.cend(); ++i)
        if (k == i->second)
            std::cout << i->first << ": " << i->second << std::endl;
 
    system("pause");
}

Не по теме:

P.S. за помощь на форуме принято благодарить. Кнопки "Спасибо" не просто так стоят

0
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
09.07.2015, 10:11  [ТС] #7
Что-то не идёт
0
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,292
Завершенные тесты: 3
09.07.2015, 10:54 #8
Алина1234, я конечно понимаю, что погроммисты должны уметь все, тем не менее, среди них не так много телепатов, и я, к сожалению, не в их числе. Какая среда разработки? Какая ошибка? Чем программа отвечает?
0
S_el
2113 / 1633 / 308
Регистрация: 15.12.2013
Сообщений: 6,576
09.07.2015, 10:58 #9
Цитата Сообщение от Krock21rus Посмотреть сообщение
расскажите пожалуйста почему unordered_map, а не map, и что это такое
разные структуры данных в основе и из-за этого unordered_map обеспечивает более высокую скорость работы.

Не по теме:


Цитата Сообщение от tnk500 Посмотреть сообщение
P.S. за помощь на форуме принято благодарить. Кнопки "Спасибо" не просто так стоят
А еще на форуме не принято спасибки выпрашивать

1
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,292
Завершенные тесты: 3
09.07.2015, 11:14 #10
S_el,

Не по теме:

А я и не для себя выпрашивал. Программу не я написал

0
09.07.2015, 11:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2015, 11:14
Привет! Вот еще темы с ответами:

Найти все символы, которые встречаются в строке более двух раз - C++
Парни помогите нужно написать в C++ Builder &quot;Найти все символы, которые встречаются в строке более 2ух раз&quot; Должна быть посимвольная...

Удалить из строки s1 все символы, встречающиеся в строке s2. - C++
Удалить из строки s1 все символы, встречающиеся в строке s2 А вот здесь как подсчитать кол-во удаленных символов? Пробовал поставить в...

Из предложения напечатать те символы, которые встречаются в нем ровно один раз - C++
Из заданного предложения выбрать и напечатать те символы, которые встречаются в нем ровно один раз (в том порядке, как они встречаются в...

Из заданного текста выбрать те символы, которые встречаются в нём ровно один раз - C++
Из заданного текста выбрать те символы, которые встречаются в нём ровно один раз. Вывести их в том же порядке, как они были в тексте.


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru