|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.10.2010, 14:16 | #1 |
Пользователь
Регистрация: 05.05.2010
Сообщений: 35
|
Удаление повторяющихся значений в строке
Имеется строка типа string, например 001015235015, здесь данные надо рассматривать по 3 символа, т.е. 001,015,235,015. Необходимо удалить повторяющиеся значения, т.е. для написанной выше строки должно получится 001015235.
Задаваемая строка может быть разных размеров, но она всегда кратна 3-ем. Помогите разобраться, буду очень признателен! Последний раз редактировалось aimk0; 11.10.2010 в 14:25. |
11.10.2010, 14:23 | #2 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
ну а мысли какие-нибудь свои есть?
ICQ: 593-013-807
|
11.10.2010, 14:48 | #3 | |
Пользователь
Регистрация: 05.05.2010
Сообщений: 35
|
Don Karleone, Ну думаю надо вначале разбить строку по 3 символа и записать все то в массив,
как-то так Цитата:
где str исходная строка, mas - массив строк. Но как тогда описать массив, если размер строки может быть разным Последний раз редактировалось aimk0; 11.10.2010 в 14:51. |
|
11.10.2010, 15:29 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
1) язык программирования (точнее среда) какая? Pascal или Delphi ?
2) если Pascal то массив можно смело задавать type Str3 = string[3]; var Mas[0..85] of Str3; {строка 256 символов не может содержать более 86 элементов} 3) перед добавлением очередной тройки чисел просто проверяйте, если такая уже в массиве есть - то проверяемую подстроку просто НЕ ДОБАВЛЯТЬ! (и не надо никаких удалений) 4) если Delphi то можно через методы TSTringList всё быстро и красиво сделать.. |
11.10.2010, 15:33 | #5 |
Форумчанин
Регистрация: 24.03.2009
Сообщений: 375
|
предположу, что лучше будет, если пробежаться в цикле по строке - каждый раз брав 3 символа и попытаться их найти в оставшейся части строки. Если первых 3-х символа (1,2,3) не найдено, передвигаемся на на один символ (2,3,4) и пытаемся найти данную троицу в оставшейся части, если найдено - то удаляем эти 3 символа и так продолжаем до предпоследней троицы.
p.s. пригодятся функции pos, copy, delete. |
11.10.2010, 15:54 | #6 | |
Пользователь
Регистрация: 05.05.2010
Сообщений: 35
|
Serge_Bliznykov
1) Среда Delphi 7 2) С TSTrungList не работал... Может покажете как через эти методы сделать? Цитата:
|
|
11.10.2010, 16:02 | #7 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
как вариант без использования массива:
Код:
ICQ: 593-013-807
|
11.10.2010, 16:58 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Don Karleone, алгоритм ОШИБОЧЕН! Будет рубить и неповторяющиеся данные!
проверьте, например, на строчке: str := '111112211113'; (строка состоит из 4-х неповторяющихся триад- 111 112 211 113 и посмотрите, что вернёт Ваша программа... Цитата:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление повторяющихся записей в БД | Dinamik | БД в Delphi | 8 | 22.03.2012 22:05 |
Удаление повторяющихся слов C | vivo89 | Помощь студентам | 2 | 24.12.2009 09:18 |
определение количества повторяющихся элементов в строке | Alex Cones | Общие вопросы Delphi | 15 | 09.08.2009 18:55 |
Подсчет повторяющихся значений поля | JSilver | БД в Delphi | 9 | 04.03.2009 10:34 |
Поиск повторяющихся значений | Flangini | Microsoft Office Excel | 23 | 22.02.2008 15:57 |