![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Гость_angelofdeath |
|
|||
|
Unregistered |
Привет всем.
Есть строка Н1 Г О Н1 В4 С …….. ИТД примерно 1500 символов Мне надо исключить повторяющиеся символы ....... строка в мемо Это сообщение отредактировал(а) Girder - 19.7.2005, 11:59 |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: нет Всего: 7 |
т.е. чтобы каждого символа было по одному или убрать одинаковые символы идущие друг за другом?
|
|||
|
||||
| angelofdeath |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.6.2005 Репутация: нет Всего: нет |
Да , каждый символ в единствнном числе
|
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: нет Всего: 7 |
тогда алгоритм такой
начальная строка s1 получаемая s2 и перебирая первую по одному символу делаем следующее смотрим (pos-ом) есть ли во второй такой символ и если нет то добавляем все! |
|||
|
||||
| RaIDeR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 20.6.2005 Репутация: нет Всего: 4 |
Я что-то не понял на чем ты пишешь, а в данном топике кликая на "Код" он почему-то не для
Delphi, а для Cpp ... ну а на дельфи это выглядет так [code=delphi] procedure TForm1.Button1Click(Sender: TObject); var S: String; C: Char; I, J: Integer; begin S := 'aabbcc'; for I := 0 to Length(S) do begin J := Pos(S[I + 1], S); C := S[J]; Delete(S, J, 1); while Pos(C, S) < 0 do Delete(S, Pos(C, S), 1); end; memo1.Lines.Add(S); end; [/code |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: нет Всего: 7 |
Зачем постоянно модифицировать строку да и pos вроде бы 0 возвращает когда не находит ничего т.к. строки нумеруются с 1??????
|
|||
|
||||
| RaIDeR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 20.6.2005 Репутация: нет Всего: 4 |
Да Я тут побыстрому набрасал .... даже не проверял, но уверен что это работает
|
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: нет Всего: 7 |
думаю нет
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| RaIDeR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 20.6.2005 Репутация: нет Всего: 4 |
procedure TForm1.Button1Click(Sender: TObject);
var I: Integer; S1, S2: String; begin S1 := 'aacbdbcxcvbfhdfyhevcbsfgsdrfw3tkjlcacbd11132213'; S2 := ''; for I := 1 to Length(S1) do if Pos(S1[I], S2) = 0 then S2 := S2 + S1[I]; memo1.Lines.Add(S2); end; |
|||
|
||||
| mvdr |
|
|||
|
физик ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1349 Регистрация: 31.12.2004 Где: Волгоград, Россия Репутация: 7 Всего: 42 |
-------------------- Появляюсь редко, но часто метко Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано |
|||
|
||||
| angelofdeath |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.6.2005 Репутация: нет Всего: нет |
Все ребята понял :-) спосибо большое
|
|||
|
||||
| angelofdeath |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.6.2005 Репутация: нет Всего: нет |
Народ , а если вот такая строчка разделенная пробелом В1 П2 О1 В1 Г П2
и надо сравнить и удалить повторяющтеся символы .......... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
angelofdeath
Символы или группы символов, разделенных пробелами? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 4 Всего: 111 |
2 angelofdeath
А пробел, в таком случае тоже повторяющийся символ или нет? |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
кстати, если сделать массив из 255 bool'ов и хранить в нем "встречался символ или нет", получится быстрее
-------------------- qqq |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
maxim1000
имеешь в виду
? В принципе верно, при условии что речь идет о повторении БАЙТОВ - что последнее время ставится под сомнение... автора бы... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| angelofdeath |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.6.2005 Репутация: нет Всего: нет |
Да 'В1 П2 О1 В1 Г П2 ' - вот такая строка , и сравнить надо как раз группу символов разделенных пробелом
пробел повторяется...........и удалить повторяющийся символ (язык делфа) Добавлено @ 10:58 Да стринговый массив можносделать var o1:array of string; begin s:=Edit7.Text; Repeat setlength(o1,length(o1)+1); if pos (' ',s)>0 then begin o1[length(o1)-1]:=trim((copy(s,1,pos(' ',s)))); s:=copy(s,pos(' ',s)+1,length(s)); end else begin o1[length(o1)-1]:=trim(s); break; end; until False; end; тока - как улаить из массива символы повторяющиеся я тоже не знаю , и молучается более грамоздко |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
angelofdeath
Пихаем строку в TStringList, заменяем пробелы на #13#10 (полчается массив строк), обрабатываем строки по принципу: берем очередную строку, сравниваем с предыдущими. Если не нашлось - берем следующую, если нашлось - на ее место пишем последнюю (кол-во строк при этом уменьшается на 1)... т.е. гоним 2 указателя - на проверяемый элемент и на конец массива элементов до тех пор пока они не сравняются. Потом обратная замена переводов строки на пробелы. Можно даже проще - заставить TStringList после разбиения отсортироваться, тогда сравнивать придется только последующий с предыдущим, а не со всеми предыдущими... Это сообщение отредактировал(а) Akina - 21.7.2005, 11:26 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| angelofdeath |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.6.2005 Репутация: нет Всего: нет |
А текст можешь набросать , просто если делать с моссивом , то при проверке у меня
возникает куча ошибок........... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 17 Всего: 454 |
Что-нить типа:
Т.к. я на Дельфе не пишу - проверяй сам. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| angelofdeath |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.6.2005 Репутация: нет Всего: нет |
Все шикарно , большое тебе спасибо , я тупил .... не подумал о
repeat , - совсем этот цикл из башки вылетел :-) |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |