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

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

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

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





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

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


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


Знаток
****

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

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


Начни и покажи, что получается. Я бы тот алгоритм попробовал реализовать так (набирал прямо в браузере, поэтому возможны огрехи):
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

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

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


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

 





- Текстовая версия 10.09.2025 14:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name