Студопедия

Главная страница Случайная лекция

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика






Алгоритмы проверки свойств последовательности

Читайте также:
  1. V. АКУСТИЧЕСКИЕ СВОЙСТВА ГОРНЫХ ПОРОД И МАССИВОВ. ОСНОВНЫЕ ФАКТОРЫ, ВЛИЯЮЩИЕ НА АКУСТИЧЕСКИЕ СВОЙСТВА ГОРНЫХ ПОРОД
  2. Аканов А.А., Сейсенбаев А.Ш., Аканова Г.Г. и соавт. Алгоритмы действий медицинских работников на уровне ПМСП по основным факторам риска ХНЗ. - Алматы, 2000. - 40 с.
  3. Акустические свойства горных пород
  4. Алгоритмы и математические модели тестирования.
  5. Алгоритмы планирования
  6. АНАЛИЗ СВОЙСТВ ТОВАРА
  7. Атомы в молекуле располагаются в определенной последовательности согласно их валентности. Валентность атома углерода в органических соединениях равна четырем.
  8. Биологические свойства крови
  9. Боевые свойства гранат

BEGIN

Программа.

Алгоритмы поиска/замены и вставки/удаления фрагментов текста

Begin

BEGIN

Begin

Программа.

Алгоритмы проверки свойств символов

Алгоритмы обработки Turbo-строк

Алгоритмы обработки строк можно условно разделить на:

1. Алгоритмы проверки свойств символов (часто для подсчета количества определенных символов)

2. Алгоритмы поиска\замены и вставки\удаления фрагментов текста.

3. Алгоритмы проверки свойств последовательности.

4. Алгоритмы сортировки и перемещения.

5. Алгоритмы обработки слов текста (включает все вышеперечисленные алгоритмы, применяемые для отдельного слова текста)

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

Решение. Для преобразования букв латинского алфавита можно использовать стандартную функцию upcase(), которая возвращает для малой латинской буквы большую, а для остальных символов таблицы ASCII – их же самих без изменения.

Для определения букв кириллицы создадим собственную функцию prov, которая для заданного ей символа будет выдавать результат True, если это буква кириллицы. В функции при организации проверки необходимо учесть особенность таблицы ASCII: буквы кириллицы разбиты на две серии:

1-я – все прописные, кроме «Ё», по алфавиту и сразу после них часть строчных от «а» до «п», кроме «ё»;

2-я – оставшаяся часть строчных от «р» до «я», после которой следуют «Ё» и «ё».

В сериях коды символов увеличиваются согласно расположению букв в алфавите: «А» меньше «Б» и т.д., «Я» меньше «а» и т.д. Исключением являются буквы «Ё» и «ё», которое имеют самые большие коды символов и не соответствуют своему расположению в алфавите.

var s:string;

i,a:integer;

Function prov(c:char):Boolean;

If ((c>=’А’)and(c<=’п’)) or ((c>=’p’)and(c<=’ё’))

{если символ попадает в 1-ю серию букв кириллицы или символ попадает во 2-ю серию}

thenprov:=true {то функция = истина}

elseprov:=false;{иначе функция = ложь}

end;

readln(s);

a:=0; {количество букв кириллицы – результат}

for i:=1 to length(s) do{для каждого символа текста}

if prov(s[i])then a:=a+1; {подсчет букв кириллицы}

s[i]:=upcase(s[i]); {преобразование регистра символа}

end;

writeln('Новый текст:',s);

writeln(‘Букв кириллицы - ’,a);

end.

Пример. Задан текст. Удалить из него все группы повторяющихся символов, оставив из группы одинаковых символов по одному, например: текст ‘абббввв444fffghtt’ должен быть преобразован в ‘абв4fght’.

Решение. Программа будет осуществлять сравнение двух соседних символов, и пока они равны, удалять первый из этих двух символов процедурой delete.

var s:string;

n:integer;

readln(s);

n:=1; {позиция очередного проверяемого символа}

while n<length(s) do{пока позиция очередного символа меньше длины S}

ifs[n]=s[n+1] {если соседние символы равны}

thendelete(s,n,1) {то удалить из текста S с позиции N один символ}

else n:=n+1; {иначе - перейти на следующий символ }

writeln('Новый текст - ',s);

end.

Пример. Задан текст. Определить, образуют ли символы строки симметричную последовательность (палиндром). Малые и большие буквы считаются эквивалентными. Последовательность из одного символа считается симметричной



Решение. Для решения этой задачи нужно сравнивать между собой символы, расположенные на одинаковом расстоянии от центра. Пусть имеется строка S:

A B C D E D C B A

Длина строки определяется функцией length(S) и равна 9. Тогда пары символов для сравнения между собой должны быть такими:

1 - 9 ( это length(S) )
2 - 8 ( это length(S) – 1 )
3 - 7 ( это length(S) – 2 )
4 - 6 ( это length(S) – 3 )
5 - 5 ( это length(S) – 4 )
I- Length(S) – ( I – 1 )

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

В программе используем процедуру UpChar преобразования малых букв в большие, описанную в примере №2.


<== предыдущая страница | следующая страница ==>
Процедуры и функции для работы со String-строками | Основы логического строения текста

Дата добавления: 2014-03-11; просмотров: 232; Нарушение авторских прав


lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.