Лекция: Пример 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$) элементов.

еще рефераты
Еще работы по информатике