Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 27.11.2018
Сообщений: 2
1

Изъять из заданного текста все повторные вхождения слов

27.11.2018, 12:59. Показов 1794. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задан текст, слова в котором разделены пробелами и знаками препинания
Разработать программу, которая изымает из этого текста все повторные вхождения слов. Помогите решить пожалуйста, через строки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2018, 12:59
Ответы с готовыми решениями:

Удалить из последовательности все повторные вхождения слов
с++ строки

Удалить из последовательности все повторные вхождения слов
При запуске программы появляется ошибка Debug Assertion Failed. Помогите пожалуйста исправить...

Удалить из текста повторные вхождения слов
Добрый день! Дан текст, содержащий от 2 до 40 слов, в каждом из которых от 1 до 5 строчных...

Удалить из текста повторные вхождения слов
из данного текста удалить повторные вхождения слов

2
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
27.11.2018, 14:36 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
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <iterator>
#include <string>
#include <set>
 
using namespace std;
 
int main() {
  string text;
  getline(cin, text);
 
  set<string> words;
  set<string> repeated;
 
  string temp;
 
  for (const auto& i : text) {
    if (!ispunct(i) && !isspace(i)) {
      temp += i;
    } else if (!temp.empty()) {
      if (words.find(temp) == words.end()) {
        words.insert(temp);
      } else {
        repeated.insert(temp);
      }
 
      temp.clear();
    }
  }
 
  copy(repeated.cbegin(), repeated.cend(), ostream_iterator<string>(cout, " "));
}
У меня почему-то не работает, не знаю, почему; может, меня кто-то поправит. В общем решение: посимвольно проходим по тексту, записываем слова в один сет, если встретили повтор, записываем в сет-ответ, который потом выводим
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
27.11.2018, 15:53 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <regex>
#include <algorithm>
#include <string>
#include <cctype>
#include <unordered_set>
#include <clocale>
 
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    std::string str{ "РаZраб0тать программу,раzраб0тать котоrая изымает из этого котоRая текста все повторные вхождения раzраб0таТь слов." }, sr{"А-Яа-яЁё[:alpha:]\\d"}, sres;
    std::regex rgx{"(^|[^" + sr + "])([" + sr + "]+)(?=$|[^" + sr + "])"};
    std::unordered_set<std::string> ust;
    std::ssub_match suf;
    for (std::sregex_iterator ib{ str.begin(), str.end(), rgx }, ie; ib != ie; ++ib)
    {
        sres += (ib->prefix().str() + ib->str(1));
        auto sc = ib->str(2);
        auto isc = sc.begin();
        std::transform(isc, sc.end(), isc, [](unsigned char c) {return tolower(c); });
        if (ust.insert(sc).second)
        {
            sres += ib->str(2);
        }
        suf = ib->suffix();
    }
 
    std::cout << (sres += suf) << std::endl;
}
0
27.11.2018, 15:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2018, 15:53
Помогаю со студенческими работами здесь

Изменить текст, удалив из него все повторные вхождения слов.
Изменить текст, удалив из него все повторные вхождения слов.

Удалить в каждом слове текста все повторные вхождения каждой буквы
Кто знает Ассемблер помогите очень прошу. №3 Задано текст, слова в котором разделены пробелами и...

Вывести заданную последовательность слов, но удалив из неё повторные вхождения слов
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных...

Вывести заданную последовательность слов, удалив из неё повторные вхождения слов
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных...

Напечатать эту же последовательность слов, но удалив из нее повторные вхождения слов
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 прописных...

Распечатать эту же последовательность слов, удалив из нее повторные вхождения слов
Проверка кода. Распечатать эту же последовательность слов, но удалив из нее повторные вхождения...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru