|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.04.2011, 15:19 | #1 |
Lawful Evil
Участник клуба
Регистрация: 13.05.2008
Сообщений: 1,208
|
с++, перебор строки
Дано: строка некой длины (в теории не ограничено)
Задача: вытащить из строки все последовательности, начинающиеся с одного символа и заканчивающиеся на другой (пусть "$" и "*" соответственно). Вопрос: по какому принципу делать перебор? На данный момент написал такой код, однако терзают сомнения в том, что он будет работать правильно (см. "remove", вложенный в цикл). Код:
1) писать в отдельный массив позицию начала и длину удаляемого куска, после чего собственно прогонять по нему цикл удаления 2) по окончании цикла просто стирать все, что содержится до последнего незакрытого символа начала сообщения. Посоветуйте, что и как делать, пожалуйста.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c) |
29.04.2011, 16:28 | #2 |
Форумчанин
Регистрация: 08.01.2010
Сообщений: 205
|
Проход по символам, если встречается $, значит, возможно, искомая последовательность есть, проходим дальше - есть встречается *, инкремент увеличиваем на 1, опять ищем $ и так далее
Если помог - кликни на значок весов под аватаром.
|
29.04.2011, 17:20 | #3 |
Lawful Evil
Участник клуба
Регистрация: 13.05.2008
Сообщений: 1,208
|
Можно вопрос - а к чему это? Данный функционал реализован, как раз этот код выкидывает все последовательности через сигнал в нужные процедуры, где они уже обрабатываются.
Вопрос в том, как не выстрелить себе в ногу при переходе по элементам, при, допустим, строке длиной в 10, символе "$" на 5й позиции и "*" на 9й, ибо код вырежет из строки элементы с 5 по 9й включительно, длина строки соответственно станет 5, в то время как переменная i будет иметь значение 10.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c) |
29.04.2011, 18:03 | #4 | ||
Форумчанин
Регистрация: 08.01.2010
Сообщений: 205
|
Цитата:
Цитата:
*Upd Хотя, если вы храните индекс $ и индекс *, то можно i уменьшать просто на их разницу
Если помог - кликни на значок весов под аватаром.
Последний раз редактировалось malinoff; 29.04.2011 в 18:08. |
||
29.04.2011, 20:54 | #5 | |
Lawful Evil
Участник клуба
Регистрация: 13.05.2008
Сообщений: 1,208
|
Цитата:
Да, я виноват, вопрос сформулировал неправильно. Правильная постановка - как не закосячить цикл стиранием части строки.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перебор для определения строки | Maksval | Microsoft Office Excel | 8 | 24.12.2010 09:58 |
перебор в с++ | Girl/C++ | Общие вопросы C/C++ | 3 | 04.10.2010 09:50 |
Перебор записей в БД | Sanakan | Помощь студентам | 9 | 22.03.2010 21:36 |
перебор записей | BredoZavR | БД в Delphi | 5 | 29.06.2009 17:25 |
Перебор с памятью | artemavd | Общие вопросы Delphi | 12 | 24.05.2009 06:48 |