0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 21
|
|
1 | |
Перед всеми глаголами в инфинитиве оканчивающихся на ить,ять,ать.Добавить частицу не перед словом29.11.2018, 11:28. Показов 1499. Ответов 8
Метки нет Все метки)
(
Преобразовать исходный текст следующим образом:перед всеми глаголами в инфинитиве оканчивающихся на ить,ять,ать.Подставить перед словом частицу "не".гулять---не гулять.Заранее спасибо.
0
|
|
29.11.2018, 11:28 | |
Ответы с готовыми решениями:
8
Перед глаголами в инфинитиве вставить отрицание - не Строки: перед глаголами в инфинитиве вставить отрицание - не Перед каждым словом добавить слово |
29.11.2018, 12:17 | 2 | |||||
0
|
3543 / 2214 / 401
Регистрация: 09.09.2017
Сообщений: 9,209
|
|
29.11.2018, 12:43 | 3 |
Код
$ cat main.cpp #include <iostream> #include <string> #include <regex> #include <clocale> int main() { setlocale(LC_CTYPE, "rus"); std::string str{ "Гулять, вертеть, палить,кричать, гудеть.Махать" }; std::regex rgx{"(^|[^А-Яа-я])([А-Яа-я]+[аяи]ть)(?=$|[^А-Яа-я])"}; std::cout << std::regex_replace(str, rgx, "$1не $2") << std::endl; } $ g++ main.cpp -Wall -Wextra -Wpedantic $ ./a.out Гуне лять, вертеть, не палить,кричне ать, гудеть.Махне ать
1
|
3543 / 2214 / 401
Регистрация: 09.09.2017
Сообщений: 9,209
|
||||||
29.11.2018, 14:01 | 5 | |||||
![]() РешениеКод
$ echo $LANG ru_RU.UTF-8
Код
$ ./a.out Гулять, вертеть, палить, кричать, гудеть. Махать не Гулять, вертеть, не палить, не кричать, гудеть. не Махать
1
|
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 21
|
|
29.11.2018, 18:02 [ТС] | 6 |
Можно комментарии к последнему.Буду благодарен.
0
|
3543 / 2214 / 401
Регистрация: 09.09.2017
Сообщений: 9,209
|
|
30.11.2018, 10:29 | 7 |
Да было бы что комментировать. Вместо обычных char'ов, которые в современных системах не всегда однозначно соответствуют печатному символу (ми. многобайтные кодировки, в частности, UTF-8) использую wchar_t, где каждый элемент кодирует ровно один символ, но зато занимает 4 байта (осторожно! в windows он занимает всего 2 байта и основной задачи не выполняет, кодировка все равно получается многобайтной). Для такого типа данных используются функции, аналогичные обычным char'овским.
Для форматного ввода-вывода через printf / scanf используется строка "%ls" вместо "%s". Регулярное выражение "%[ \t\n\b\r(]" означает ввод любого количества пробельных символов (пробел, табуляция, перевод строки, переход на символ назад, переход на начало строки) или открывающих скобок, которые тоже могут "приклеиватсья" к слову. Это сделано чтобы сохранить количество пробелов между словами. Все это вводится в обычный массив char'ов, поскольку обработка не предполагается. Дальше функцией wcsstr() ищем вхождение подстроки "ть" (обратите внимание, что wchar_t'шные строки предваряются модификатором L). После чего проверяется предыдущий символ, который по условию должен быть 'а', 'я' или 'и'. Если это не так, то преобразований к слову применено не будет. Потом последовательно проверяются символы от найденного "ть" до конца строки и если хоть один из них будет буквой, считаем что "ть" нашлось в середине слова. Кстати, здесь ошибка: искать надо было не с начала слова, а с конца. Правда, стандартных функций для этого нет, но можно искать последний символ 'ь' в строке и проверять остальные аналогично проверке 'а', 'я', 'и'. С этим справитесь самостоятельно. В общем-то, все.
1
|
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 21
|
|
30.11.2018, 17:06 [ТС] | 8 |
Но всё-же мне некие моменты не ясны и в программирование я новичок,хотел бы узнать что делает каждая строка.P.S Пожалуйста.
0
|
3543 / 2214 / 401
Регистрация: 09.09.2017
Сообщений: 9,209
|
|
01.12.2018, 09:26 | 9 |
Если я вам прокомментирую каждую строчку понятнее не станет.
Лучше посидите в обнимку с документацией самостоятельно. Что каждая строчка делает, где может упасть, для чего предназначена.
1
|
01.12.2018, 09:26 | |
Помогаю со студенческими работами здесь
9
В каждой строке, перед словом, нужно добавить определенный текст
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |