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

В каждой второй строке удалить третье слово, если такое есть

25.01.2014, 18:34. Показов 1476. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Ребята срочно нужна помощь,буду признателен,нужно в С++ разработать программу следующего условия:

В каждой второй строке надо удалить третье слово, если такое есть,
при этом количество пробелов в строке не должно измениться.
Остальные строки не меняются.

Заранее благодарен, Борис!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2014, 18:34
Ответы с готовыми решениями:

Найти слово "ТЕКСТ", если такое слово есть,то отпечатать его номер в строке.
В символьной строке, содержащей не более 80 символов, каждые два соседних слова разделены одним пробелом, строка заканчивается символом...

Скопировать содержимое текстового файла, удалив в каждой строке слово номер N+1, если в слове N есть 4
Здравствуйте. Помогите, пожалуйста, в написании программы Скопировать содержимое текстового файла, удалив в каждой строке слово номер...

В каждой строке удалить второе слово
Ребята, нужна помощь. Нужно иметь N-ое кол-во строк и вводить это кол-во с клавиатуры, но не больше 20. Дальше вводим каждую строку, позже...

5
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
26.01.2014, 01:56
Легко решить можно с помощью регурярных выражений и boost. Например, удаление 3 слова в строке:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
#include <boost/regex.hpp>
 
int main()
{
   std::string str = "first second third fourth ";
 
   const boost::regex reg("\\s*(\\<.*?\\>\\s+){2}(\\<.*?\\>)");
   boost::smatch match;
   if (boost::regex_search(str.cbegin(), str.cend(), match, reg))
   {
      //for (auto& i : match) std::cout << i << "\n";
      if (match.size() == 3)
         boost::algorithm::erase_first(str, match[2].str());
   }
   std::cout << str << "\n";
 
   return 0;
}
Это не сложно будет переделать под решение полной задачи, - нужно будет всего лиши разбить требуемый текст на строки и пройтись по нему в цикле работая с каждым третим элементом. А без буста все это писать надо будет очень долго и нудно.

Не по теме:

Кликните здесь для просмотра всего текста
Вопрос не по теме, по регулярному выражению - почему данный ниже код бросает иключение? - хотел сделать lookbehind (?<=) в регулярке, что то типа этого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <boost/algorithm/string/regex.hpp>
#include <boost/regex.hpp>
 
int main()
{
   std::string str = "first second third fourth ";
 
   const boost::regex reg("(?<=\\s*(\\<.*?\\>\\s+){2})(\\<.*?\\>)");
   boost::algorithm::erase_regex(str, reg);
   std::cout << str << "\n";
 
   return 0;
}

0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
26.01.2014, 13:00
Цитата Сообщение от DiffEreD Посмотреть сообщение
Это не сложно будет переделать под решение полной задачи, - нужно будет всего лиши разбить требуемый текст на строки и пройтись по нему в цикле работая с каждым третим элементом. А без буста все это писать надо будет очень долго и нудно.
Буст устанавливать компилировать нада, лучше из stl <regex> использовать никакой либы подключать не нужно заголовок добавил #include <regex> и все юзай РВ. С помощью <regex> за 5 минут делается.

Добавлено через 2 минуты
А от рв что б на предложения разбить примерно такое"(?:\\s|[^\\.!\\?])+?\\.|!|\\?"
0
26.01.2014, 13:01

Не по теме:

Цитата Сообщение от DiffEreD Посмотреть сообщение
Вопрос не по теме
заглядывать назад в PCRE позволяется только на определенное количество символов, а \s* и т.д. - неопределенное.

1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
26.01.2014, 13:11
Цитата Сообщение от KOPOJI Посмотреть сообщение
заглядывать назад в PCRE позволяется только на определенное количество символов, а \s* и т.д. - неопределенное.
а в <regex> РВ не PCRE, а ECMAscript РВ (javascript РВ).
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
26.01.2014, 13:31
ninja2, PCRE = Perl-Compatible Regular Expressions. Перевод нужен, или достаточно? У него boost. Ну и, если уж так хочется что-нибудь написать - то можно сначала полистать мануал
http://www.boost.org/doc/libs/... yntax.html
There are three main syntax options available, depending upon how you construct the regular expression object:
Perl (this is the default behavior).
POSIX extended (including the egrep and awk variations).
POSIX Basic (including the grep and emacs variations).
Добавлено через 6 минут
ninja2, и да, в дополнение, по поводу ECMAScript http://www.ecma-international.... #sec-15.10
A RegExp object contains a regular expression and the associated flags.

NOTE The form and functionality of regular expressions is modelled after the regular expression facility in the Perl 5 programming language.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2014, 13:31
Помогаю со студенческими работами здесь

Если на k-й символ попадает слово, то оно относится ко второй строке
Само задание нужно разбить исходную строку на две подстроки , причём первая длинной k. Если на к-й символ попадает слово, то его следует...

В предложении удалить первое вхождение “w”, если такое есть
Как можно выполнить это задание с помощью строк?? В предложении удалить первое вхождение “w”, если такое есть. Образовавшуюся “дыру”...

В каждой строке файла удалить среднее слово
В каждой строке файла удалить среднее слово, результат записать в файл Например, в строке 7 слов - удалить 4 слово Если 6 слов, то...

В каждой строке текста удалить второе слово
Привет всем, у меня вопрос. Нужно ввести 20 строк из 128 символов (максимум, неважно какое кол-во символов), но в каждой строке нужно...

Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово "нет", то удалить его
Дана строка, в котором есть слово &quot;да&quot; или слово &quot;нет&quot;. Если в нем есть слово &quot;нет&quot;, то удалить его или получить строку в слова...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru