Лекция: Пример 25. Определить количество слов в тексте.
a$ = " Отговорила роща золотая Березовым, веселым языком "
' выделяем i-й знак и проверяем буква ли это
FOR i = 1 TO LEN(a$)
tmp$ = MID$(a$, i, 1): isletter = 0
IF 128 <= ASC(tmp$) AND ASC(tmp$) <= 175 THEN isletter = 1
IF 224 <= ASC(tmp$) AND ASC(tmp$) <= 239 THEN isletter = 1
IF 65 <= ASC(tmp$) AND ASC(tmp$) <= 90 THEN isletter = 1
IF 97 <= ASC(tmp$) AND ASC(tmp$) <= 122 THEN isletter = 1
' Если это буква, то формируем слово
' Иначе переходим к формированию след слова
IF isletter = 1 AND i < LEN(a$) THEN
T$ = T$ + tmp$
ELSE
IF LEN(T$) > 0 OR isletter = 1 THEN
IF i = LEN(a$) AND isletter = 1 THEN
T$ = T$ + tmp$ ' Теперь можно проводить анализ очередного слова Т$ PRINT T$ L = L + 1
T$ = "" ' Обнулять Т$ обязательно
END IF
END IF
NEXT i
PRINT " Всего слов "; L
Результат: Отговорила роща золотая Березовым веселым языком Всего слов 6
Работа программы. Приведенный алгоритм выполняет следующие операции: выделяет очередной символ; если это буква, то начинает накапливать очередное слово; если это не буква — переходит к анализу полученного слова и формированию следующего.
Четыре оператора IF в начале цикла предназначены для определения принадлежности выделенного знака к буквам русского или английского алфавита. Действие операторов основано на анализе ASCII-кода каждого знака. Если знак является буквой, то переменной isletter присваивается значение 1, в
противном случае — 0.
Пример 26. Сформировать массив слов Word$, входящих в текст A$. Определить слова с максимальным и минимальным количеством букв.
CLS 'Очистка экрана
DIM word$(LEN(a$))
a$ = «Еще светло перед окном, В разрывы облак солнце блещет»
min = LEN(a$)
FOR i = 1 TO LEN(a$)
' выделяем i-й знак и проверяем буква ли это
…
' Если это буква, то формируем слово
…
'Теперь можно проводить анализ очередного слова Т$
K = K + 1: word$(K) = T$ 'формируем массив слов
' находим слово с max кол-вом букв
IF LEN(T$) > max THEN max = LEN(T$): wmax$ = T$
' находим слово с min кол-вом букв
IF LEN(T$) < min THEN min = LEN(T$): wmin$ = T$
T$ = "" ' Обнуляем Т$
END IF
END IF
NEXT i
PRINT «Слово с кол букв max »; wmax$
PRINT " Слово с кол букв min "; wmin$
PRINT «Массив слов»
FOR i = 1 TO K
PRINT word$(i)
NEXT i
END
Результат
Слово с кол букв max разрывы
Слово с кол букв min В
Массив слов
Еще
светло
перед
окном,
В
разрывы
облак
солнце
блещет
Работа программы. Алгоритм выделения слова из предыдущего примера приведен сокращенно. В первой сроке программы происходит объявление массива Word$. Рассчитывать, сколько нем будет слов не рационально. Для этого пришлось бы анализировать исходную строку и, получив количество слов, и объявить массив, а для его заполнения выполнить алгоритм заново. Поэтому предполагаем, что в массиве Word$ Len(a$) элементов.