Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример 14. Определить к какому языку и регистру клавиатуры относится данная буква




Выделение логической группы

Логической группой называют совокупность знаков, которая объединена общими свойствами. К таким группам можно отнести гласные и согласные буквы русского алфавита, буквы латинского алфавита, цифры, строчные и прописные буквы и многие другие.

Каждый алгоритм анализа символа содержи три основных действия:

1. Выделение.

2. Анализ.

3. Обработка по условию.

Анализ заключается в проверке, соответствует ли знак условию

принадлежности к логической группе. Как правило, анализ основан на сравнении выделенного знака с определенным ASCII-кодом или диапазоном номеров.

Обработка в соответствии с решаемой задачей определяет то, что нужно делать с выделенным символом или текстом в целом, и может подразумевать большой спектр действий.

Пример 13. Определить, сколько в слове «АВРОРА» русских букв А и Р.

A$ = "ABPOPA"

FOR i = 1 TO LEN(A$)

tmp$ = MID$(A$, i, 1)

IF tmp$ = "A" OR tmp$ = "P" THEN k = k + 1

NEXT i

PRINT k

Результат: 4

Приведенная программа имеет недостаток — она определяет наличие только заглавных А и Р. Если значение исходной переменной присваивается оператором INPUT, то есть вводится пользователем, то при вводе строчных букв результат будет неверным.

INPUT a$

SELECT CASE ASC(a$)

CASE 65 TO 90: PRINT " Лат.ЗАГЛАВНАЯ "

CASE 97 TO 122: PRINT "Лат. Строчная"

CASE 12 TO 159: PRINT "Русс. ЗАГЛАВНАЯ"

CASE 160 TO 175: PRINT "Русс. Строчная"

CASE 224 TO 239: PRINT "Русс. Строчная"

CASE ELSE: PRINT "НЕ является БУКВОЙ"

END SELECT

Работа программы. Алгоритм основан на использовании конструкции логической передачи управления SELECT CASE. Она анализирует ASCII-код введенного знака, который выдает функция ASC. В каждом CASE указан диапазон возможных значений, соответствующей группе букв.

Большой спектр задач выделения и анализа фрагментов строк решается с помощью функции INSTR.

Пример 15. Определить, входит ли строка В$="dow" в слово, A$ = "Windows".

INPUT A$

INPUT B$

k = INSTR(A$, B$)

IF k > 0 AND LEN(B$) > 0 THEN PRINT "Yes" ELSE PRINT "No"

END

Результат:

Yes

Работа программы. Алгоритм основан на работе функции INSTR. Результатом ее работы является целое число k равное номеру знака в А$, с которого начинается вхождение B$. Естественно, что если k больше нуля, то В$ входит в А$. Условие в операторе IF состоит из двух компонентов. В одном проверяется значение k, во втором (LEN(B$) > 0) — длина переменной В$.

Второе условие введено для того, чтобы выдать отрицательный ответ в случае ввода нулевой переменной. Иначе при В$="" значение k будет равно 1, и программа определит вхождение.

Пример 16. Определить, сколько раз B$ входит в A$.

A$ = "промышленное производство проводов"

B$="про"

i = 1

k = 0

DO

x = INSTR(i, A$, B$)

IF x > 0 THEN

i = x + LEN(B$) ' Номер начала поиска

k = k + 1 ' Счетчик вхождений

ELSE

EXIT DO ' Выход из цикла

END IF

LOOP

PRINT "всего вхождений="; k

Результат:

Всего вхождений= 3

Работа программы. Цикл DO …LOOP использован потому, что заранее неизвестно, сколько будет вхождений.

В строке i = x + LEN(B$) номер начала поиска передвигается направо. Если программа найдет первое вхождение, то нужно будет продолжить поиск с позиции, номер которого равен номеру начала вхождения плюс длина искомого слова.

В примере первое вхождение «про» в «промышленное производство проводов» начинается с первой позиции, следователь но, продолжать поиск нужно с 4-й позиции (1 + LEN(B$)=1+3=4).

Если обнаруженное вхождение нужно заменить другой строкой, то используют оператор MID$.

Пример 17. Заменить все пробелы на тире в тексте А$.

A$= "Погиб поэт! невольник чести!"

FOR i = 1 TO LEN(A$)

IF ASC(MID$(A$, i, 1)) = 32 THEN MID$(A$, i, 1) = "-"

NEXT i

PRINT A$

Результат:

Погиб-поэт!-невольник-чести!

Работа программы. В цикле поочередно выделяются знаки переменной А$. Функция ASC определяет АSCII-код знака, но в том случае, если номер равен 32 (ASCII-код пробела), оператор MID$ заменяет текущий символ знаком «минус» (тире).

Сортировка текстовых массивов




Поделиться с друзьями:


Дата добавления: 2015-05-29; Просмотров: 655; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.083 сек.