![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 11.10.2012
Сообщений: 409
|
![]()
Дана строка, содержащая текст на русском языке. В предложении некоторые слова записаны подряд несколько раз. Получить в новой строке отредактированный текст, в котором удалены подряд идущие вхождения слов в предложениях.
Вот что имеется. Код:
1)При входной строке "пробел строка" - программа крашится. Как лечить? 2)Как сделать, чтобы не учитывался регистр букв при сравнении 2 слов? stricmp пробовал, но он рандомно работает у меня) 3)Как сохранить знаки препинания в выходной строке? После strtok они исчезают безвозвратно. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]()
1) проверять вtрнувшуюся из strtok строку на длину больше 0
2) привести входную строку к единообразному регистру и уже потом отправлять в strtok. 3) Сохранять исходную строку в отдельный буфер. А в strtok отправлять копию. Потому как strtok() модифицирует передаваемую строку, заменяя токены на нулевые символы. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 11.10.2012
Сообщений: 409
|
![]() Цитата:
1)второе слово не понял, но предположил, что надо проверять все p[i]. Не помогло, может что-то не то делаю. 2)Каким образом это сделать и как потом вывести с вводимым регистром? 3)Как мне потом с этим работать? Я то изменяю строку. Соответственно знаки переносятся, что мне даст сохраненная исходная строка? |
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]()
1)быгык) странно, что вообще работало. Вы i не обнуляете:
Код:
3) через strtok вы можете получить смещение от начала строки получившегося слова ( т.е. p-начальный вычесть р-итый). проверяете слово на повторение, и если повтор, то в изначальной строке по данному смещению на длину повторяющегося слова сохраняете какой-нить невозможный символ (их там в начале ASCII-таблицы более чем достаточно). После окончания разбора конструируете возвращаемую строку, посимвольно копируя исходную, пропуская "невозможные". |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 11.10.2012
Сообщений: 409
|
![]() Цитата:
Можете привести код, как сохранять эти знаки, я что-то не могу переварить эту информацию. И еще такой вопрос появился. Если у меня строка - галя галя/ галя. У меня на выходе все те же гали) а должно получиться галя/ галя. Тут нужна скорее всего проверка типа "Если токен равен токену + '/', то ..., а как это написать? |
|
![]() |
![]() |
![]() |
#6 | ||
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]() Цитата:
Цитата:
Получаем массив предложений. И теперь в каждом предложении отдельно ищем повторы. Т.е. набор токенов (или тех символов, которые strtok() заменяет нулем) должен быть стать таким" ,". Последний раз редактировалось Smogg; 11.12.2013 в 05:04. |
||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и | ANTON1994 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 09.02.2013 14:07 |
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки | Алексей_2012 | Помощь студентам | 1 | 05.04.2012 11:26 |
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности | kris__tina | БД в Delphi | 1 | 09.06.2011 15:31 |
Создание пустой строки и копирование в неё содержимое предыдущей строки | Gvaridos | Microsoft Office Excel | 2 | 29.10.2010 13:33 |
Перенести символа с начала строки в место перед запятой этой же строки. | Zhiltsov | Microsoft Office Excel | 4 | 05.06.2009 13:10 |