![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 08.09.2010
Сообщений: 17
|
![]()
Здравствуйте! Подскажите, пожалуйста по такому вопросу, есть Edit в котором слова. Слова эти разделены пробелами. Как удалить n первых слов из строки, если n мы задаем в коде?!
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Берешь строку и проверяешь каждый символ в цикле - соответственно каждый пробел завершает одно слово. Нужно насчитать n пробелов. Соответственно позиция последнего (n-го) пробела в строке будет указывать на то число символов, которые необходимо удалить.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 23.09.2009
Сообщений: 27
|
![]() Код:
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Во время каждого прохода ты копируешь строку, а это кажись не просто перенос символов, а создание строки заново. В общем быстрей должно быть именно нахождение указателя и только уже затем манипуляция (одна единственная, вместо твоих 5 в крайнем случае) со строкой...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#5 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
![]() Цитата:
Но, я уверен (если хотите, могу проверить), что при любом N < 10000, предложенный выше код (точнее, аналогичный, только правильный!) на любой машине, поддерживающей Windows будет выполняться сотые (если не тысячные) доли секунды. Не, ну понятно, конечно, что программа, работающая 10 миллисекунд лучше, чем программа, работающая целых 50 миллисекунд. ![]() Последний раз редактировалось Serge_Bliznykov; 21.06.2011 в 08:48. |
||
![]() |
![]() |
![]() |
#6 | ||
Пользователь
Регистрация: 23.09.2009
Сообщений: 27
|
![]() Цитата:
Цитата:
Может ему ещё показать, как это реализовать мультипоточно? |
||
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Utkin имел в виду другое. Что алгоритм не эффективен. И что для решения этой задачи не надо в цикле удалять из строки подстроку - это просто нерентабельно. А лучше идти по строке, считать встречающиеся пробелы, отсчитали N - удалить ЦЕЛИКОМ все слова. примерно так: Код:
|
|
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
![]() ![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 21.06.2011 в 13:43. |
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Utkin, ну, Вы же понимаете, что Вы немного утрируете?!
![]() в реальной жизни всё далеко не так однозначно... Хорошо. давайте рассмотрим такой простой пример. Есть фунция PosEx решение задачи через неё: Код:
есть решение через удаление подстроки (пост #3) Вы готовы ДОКАЗАТЬ, насколько эти варианты отличаются по быстродействию?! Дайте, приведите конкретные цифры? p.s. А ещё не забывайте, есть такие языки как JAVA, C# (и другие под .NET) - там подобную задачу можно решить вообще одним оператором. Ну и что, что выполняться будет на пять миллисекунд дольше. Если в 99.9% случаев (когда данный код не вызывается в миллионных циклах) разницу НЕВОЗМОЖНО уловить!! Никак! Погрешность загруженности Windows больше может влиять на скорость выполнения, чем методы оптимизации.. |
![]() |
![]() |
![]() |
#10 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Конечно, понимаю (что утрирую)
![]() ![]() Цитата:
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 21.06.2011 в 14:35. |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удалить текст между двух слов | Polotenchik | Microsoft Office Word | 5 | 12.06.2011 11:01 |
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, | Шпунюся | Помощь студентам | 1 | 16.12.2010 21:02 |
Удаление слов из строки. | grave123 | Общие вопросы C/C++ | 2 | 20.12.2009 15:01 |
С++ строки(замена слов) | GodsamcK | Помощь студентам | 0 | 15.12.2009 19:02 |
Как из переменной типа String удалить пару слов | zotox | Помощь студентам | 3 | 30.11.2008 19:14 |