Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2022, 14:40   #1
junker_2022
Новичок
Джуниор
 
Регистрация: 12.12.2022
Сообщений: 1
По умолчанию Алгоритм accumulate в C++

Подскажите, как решить такую задачу: Напишите функцию, которая принимает строку-запрос и множество стоп-слов и возвращает новую строку. В новой строке после запроса идут стоп-слова через пробел, перед каждым стоит дефис. Для этого нужно передать в accumulate четвёртым аргументом функцию, которая сворачивает множество стоп-слов в требуемый формат.
Мой код не работает:
Код:
#include <set>
#include <string>
#include <numeric>
using namespace std;


string DushStopWords(string dush, string word) {
dush = "-"s;
return dush + word;
}
string AddStopWords(const string& query, const set<string>& stop_words) {
string result = accumulate(stop_words.begin(), stop_words.end(), query, DushStopWords);
return result;    
}
Видимо не правильно делаю в дополнительной функции DushStopWords. Но что?
Дополню по условию:
На вход Подается строка для поискового сервера, допустим:
Help find error
А в догонку множество стоп-слов:
in, with, on, if, and
Нужно, чтобы выводилось так:
Help find error -in -with -on -if -and
одной единой стркой

Последний раз редактировалось junker_2022; 12.12.2022 в 14:52. Причина: Уточняю условия
junker_2022 вне форума Ответить с цитированием
Старый 12.12.2022, 16:10   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

С минимальными правками:
Код:
#include <iostream>
#include <set>
#include <string>
#include <numeric>

using namespace std;

string DushStopWords(string query, string word) {
    return query + " -" + word;
}

string AddStopWords(const string& query, const set<string>& stop_words) {
    string result = accumulate(stop_words.begin(), stop_words.end(), query, DushStopWords);
    return result;
}

int main()
{
    string q = "Help find error";
    set<string> words = {"in", "with", "on", "if", "and"};
    cout << AddStopWords(q, words);
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не понимаю std :: accumulate Quantum1 Общие вопросы C/C++ 5 19.02.2017 20:25
Заменить accumulate на count_if Yoh Помощь студентам 3 12.12.2013 05:15
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм. iamhated Помощь студентам 1 15.01.2012 16:24
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм iamhated Помощь студентам 1 14.01.2012 16:22
вычислить среднее гармоническое значение элементов вектора чисел с плав точкой с пом алгоритма accumulate -GT- Общие вопросы C/C++ 2 28.11.2009 17:19