Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция для удаления всех знаков препинания 
:(
    Опции темы
dimaSlon
Дата 25.6.2017, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.6.2017

Репутация: нет
Всего: нет



Есть набор строк, написать функцию, которая принимает на вход этот набор строк и возвращает новый набор строк, где в каждом из строк удалено все знаки препинания: ",.!:" Используя: std::remove_if, std::erase, std::transform
То что у меня уже есть но не работает и нужна ваша помощь:
Код

#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>
std::vector<char> remove(std::vector<char>& s)
{
    if (std::any_of(s.begin(), s.end(), ispunct))
        s.erase(std::remove_if(s.begin(), s.end(), ispunct), s.end());
    return s;
}

bool shouldBeRemoved(char words)
{
    std::vector<char> vector;
    for (int index = 0; index < vector.size(); ++index)
        vector.emplace_back(words);
    std::transform(vector.begin(), vector.end(), vector.begin(), &remove);
}

int main()
{
    char words[] = { "The requested page title was invalid, empty, or: an incorrectly linked inter-language! or inter-wiki title. It may contain one or more, characters that cannot, be used in titles." };
    shouldBeRemoved(*words);
    for (const auto& i : words)
    {
        std::cout << i << "\n";
    }
    return 0;
}

PM MAIL   Вверх
dimaSlon
Дата 25.6.2017, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.6.2017

Репутация: нет
Всего: нет



какой тип должен быть в функции remove вместо auto, и правильно ли я делаю что передаю bool?
и правильно я  делаю:
Код

std::transform(vector.begin(), vector.end(), vector.begin(), remove);


Код

#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>
bool remove(auto& сh)
{
    if (std::any_of(сh.begin(), сh.end(), ispunct))
        сh.erase(std::remove_if(сh.begin(), сh.end(), ispunct), сh.end());
    return сh;
}

bool shouldBeRemoved(char words)
{
    std::vector<char> vector;
    for (int index = 0; index < vector.size(); ++index)
        vector.emplace_back(words);
    std::transform(vector.begin(), vector.end(), vector.begin(), remove);
}

int main()
{
    char words[] = { "The requested page title was invalid, empty, or: an incorrectly linked inter-language! or inter-wiki title. It may contain one or more, characters that cannot, be used in titles." };
    shouldBeRemoved(*words);
    for (const auto& i : words)
    {
        std::cout << i << "\n";
    }
    return 0;
}

PM MAIL   Вверх
xvr
Дата 1.7.2017, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Вы бы для начала почитали, что именно ваши функции (std::remove_if, std::erase, std::transform) делают. В частности std::transform не может ничего удалить, что бы вы ей не подавали

Цитата(dimaSlon @  25.6.2017,  11:36 Найти цитируемый пост)
и правильно я  делаю:

Нет


Это сообщение отредактировал(а) xvr - 1.7.2017, 10:36
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1176 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.