![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.03.2021
Сообщений: 39
|
![]()
Здравствуйте, нужно написать программу, которая ищет анограммы в строке и должна выводить эти слова. Вот моя программа, но она выводит отсортированные анограммы, а мне нужны сами эти анограммы. Строка следующая: "Hare Krishna Hare nap teachers cheaters PAN ear era hectares Krishna".
Код:
|
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
А что если использовать map<string, vector<string>>, в качестве ключа использовать отсортированную строку из маленьких букв, а в значение складывать исходную строку. А потом выводить только те значения, чья длина больше одного.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 14.03.2021
Сообщений: 39
|
![]()
Я тоже об этом подумал. А разве то, что будет несколько одинаковых ключей - отсортированные строки, никак не отразится на работе программы? Если это так, то может быть поменять исходную строку в ключ, а отсортированную строку в значение.
|
![]() |
![]() |
![]() |
#4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Ну конечно отразится. В векторах-значениях будут находиться те строки, которые состоят из одинакового набора букв, т.е. являющиеся анаграммами.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 14.03.2021
Сообщений: 39
|
![]()
Теперь получился такой код, но у меня не работает count. В чём может быть причина?
Код:
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 14.03.2021
Сообщений: 39
|
![]()
Всё получилось, пришлось поменять ключи и значения местами. Также вот изменённый for:
Код:
|
![]() |
![]() |
![]() |
#7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Ну если вас все устраивает в работе программы, то ладно. Хотя результат mp.count равен 0 или 1, так что дальнейший if всегда не будет срабатывать.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 14.03.2021
Сообщений: 39
|
![]()
Как объяснил мне преподаватель, count в map работает только с ключами, и я в этом наглядно убедился, изначально в качестве ключа у меня стояли исходные строки, которые очевидно были разными, соответственно count насчитал для каждой 1, после поменял местами ключи и значения, теперь у меня на месте ключей стоят отсортированные строки, и count считает правильно, например, отсортированная строка из слова "teachers", при обращении к ней с помощью count он выводит 3, так как помимо неё есть ещё cheaters и hectares.
|
![]() |
![]() |
![]() |
#9 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Вот это меня и удивляет, так как в map ключи уникальны. Если ключ есть в map, то count вернет 1, а если нет - 0. Покажите код целиком.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |