IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Помогите со строками,пожалуйста
nataly
сообщение 8.02.2012 21:57
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Женский

Репутация: -  0  +


Определить сколько слов длинной К символов находится в строке.К вводится с клавиатуры.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Федосеев Павел
сообщение 11.02.2012 23:26
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


Начни и покажи, что получается. Я бы тот алгоритм попробовал реализовать так (набирал прямо в браузере, поэтому возможны огрехи):
TYPE
{тип для набора ограничителей слов в строке}
TCharSet=Set of Char;
CONST
{Список всех ограничителей слов в строке}
Delim_Set : TCharSet = [ ' ', '.', ',', '!', '?', '-', ':',
';', '(', ')', '[', ']', '{', '}'
];
..................................................................

{Нахождение длины слова из строки Src.
Поиск слова начинается с позиции StartPos.
На выходе не только длина очередного слова, но и переменная StartPos
указывает на следующий за словом символ.
Если слово не найдено, то StartPos=Length(Src)+1.}
FUNCTION GetLengthNextWord(CONST Src : String;
VAR StartPos : Integer;
CONST Delimiters : TCharSet):Integer;
VAR
i : Integer;
BEGIN
i:=StartPos;
{i-текущая позиция в анализируемой строке}
{ищем первую букву слова}
while (i<=Length(Src)) do
if (Src[i] in Delimiters)
then Inc(i)
else Break;
StartPos:=i;{StartPos указывает на первую букву в слове или на "следующий за последним символом в строке"=Length(Src)+1}
{теперь просматриваем слово пока не закончится строка или
не начнутся ограничители слов}
.............................................................................
GetLengthNextWord:=i-StartPos;{i - указывает на следующий за словом индекс (т.е. на очередной пробел)}
StartPos:=i;{для дальнейшего использования}
END;

..................
CountWordK:=0; {счётчик количества слов длиной K}
StartPos:=1; {слово в строке s начинаем с 1-й позиции}
while StartPos<=Length(s) do {пока не закончились слова в строке}
if GetLengthNextWord(s, StartPos, Delim_Set)=K
then Inc(CountWordK); {если длина очередного слова равна K, то инкрементируем счётчик}
..................


Это не законченный кусок, а скорее попытка реализации...

Ух, почти по-немецки "GetLengthNextWord" smile.gif

Сообщение отредактировано: Федосеев Павел - 11.02.2012 23:38
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"