Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 21:00   #11
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

s-andriano, для этого есть функция trim.
Lesii, а при чем здесь пробел после слова?
there are no limits when you're software engineer
spein вне форума
Старый 06.05.2012, 21:03   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
для этого есть функция trim
А как тримирование поможет избавиться от внутренних пробелов?
I'm learning to live...
Stilet вне форума
Старый 07.05.2012, 06:12   #13
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Старый спор о том, какие символы считать - в котором все не правы. Spein, что за загадочный trim ты имел в виду? )) В разделе про Pascal оставайся, пож, в рамках Pascal'я.

Считать нужно ГРАНИЦЫ (например, тут я считаю левые) между алфавитными символами и разделительными. Вот абсолютно надежный способ, который также учитывает краевые эффекты на концах строки:
Код:
if (s>'') and (s[1] in Alphabet) then count:=1 else count:= 0;
for i:=2 to Length(s) do if not (s[i-1] in Alphabet) and (s[i] in Alphabet) then inc(count);
Предпочитаю на "ты".
TinMan вне форума
Старый 07.05.2012, 09:40   #14
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А мой пример тоже не идеален.
Мы здесь гнем пальцы - чей пример круче, или решаем конкретную задачу.
Если задачу, то решение должно включать следующие этапы:
1. Преобразование всех разделителей к общему виду, например, в пробелы.
2. Удаление повторяющихся разделителей (двойных пробелов).
3. Удаление, если есть, разделителей в начале и конце.
4. Проверка, что результат не пустой.
5. Подсчет оставшихся разделителей.
6. Вычисление и вывод результата на печать.

Вот теперь и считайте, сколько этапов пропущено в чьем примере.
s-andriano вне форума
Старый 07.05.2012, 09:53   #15
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
...абсолютно надежный способ...[/CODE]
Этот способ как-то подразумевает, что если символ не входит в алфавит, то он автоматически является разделителем.
Это дополнительное внешнее условие, не оговоренное в условии задачи.
Т.е. речь может идти только о частном решении (при некоторых дополнительных условиях), но не об общем.
Впрочем, если брать за основу именно однопроходный алгоритм, то его можно реализовать конечным автоматом, который отслеживает переходы от разделителя к символу алфавита при любом количестве символов, не принадлежащих ни к одному из этих множеств, между ними.
s-andriano вне форума
Старый 07.05.2012, 11:14   #16
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Мы здесь гнем пальцы - чей пример круче, или решаем конкретную задачу.
Только не надо говорить "мы". Я - решал конкретную задачу и решил ее. Ты - сотрясаешь воздух..
Цитата:
Если задачу, то решение должно включать следующие этапы:
И кто это сказал? Кнут? Ленин? Твой препод? Ты?..

Цитата:
5. Подсчет оставшихся разделителей.
Повторю для тех, кто в танке - этот способ порочен по своей сути, по исходной посылке. Осмысление задачи в самом начале (а не хватание за клаву) дает возможность найти более правильный, внутренне согласованный подход (см. мой пост выше).

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Этот способ как-то подразумевает, что если символ не входит в алфавит, то он автоматически является разделителем.
Это дополнительное внешнее условие, не оговоренное в условии задачи.
Сан-Андриан, не с той ноги встал?.. Хочется поисследовать случай с тремя и более группами символов?.. Ну, давай - только создай другую тему, а не флуди тут.

Цитата:
Впрочем, если брать за основу именно однопроходный алгоритм, то его можно реализовать конечным автоматом, который отслеживает переходы от разделителя к символу алфавита при любом количестве символов, не принадлежащих ни к одному из этих множеств, между ними.
Умн'о загнул! А чего ж ты стал толкать способ с копированием строки в промежуточную?.. Ох, Андриано, старая ты пер'ечница )).
Предпочитаю на "ты".
TinMan вне форума
Старый 07.05.2012, 22:07   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так, ребята, вы уже на дуэль? Вам пистолеты дать или йада?
Тема закрыта - спор прекращаем.
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_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
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10