Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Записи (комбинированные типы) и их объявления

Begin

Begin

Функции и процедуры ВР для работы со строками

Begin

Var

Дополнительные операции над строками в ВР

Var

Begin

Var

Строковый тип ВР (string)

End

else S:=S + (j – d[t[s + j]]; {(1)}

end;

t[s+j] – индекс стоп-символа.

Если не обращать внимания на присваивание (1), то алгоритм БМ совпадает с простейшим алгоритмом поиска подстроки.

Здесь для каждого символа из строки Т находится его самое правое вхождение в образец Р, т.е. наибольшее k, при котором P[k]=c. Эти сведения хранятся в массиве d. Если символ «с» вовсе не встречается в массиве, то d[c]=0. Если обнаружен стоп-символ, то сдвиг увеличивается на значение j – k.

Формирование массива d из наибольших k, при которых P[k]=c для каждого символа с, входящего в Р, можно выполнить с помощью следующего кода.

{ формирование массива d }

for c:=’A’ to ‘z’ do d[c]:=0;

{ если «с» в нет в Р, то d[c]=0 и S=i }

For k:=1 to m do d[p[k]]:=k;

{d – равно последнему индексу символа с }

  r e m i n i s c e n c e
k                        
  d[r] d[e] d[m] d[i] d[n] d[i] d[s] d[c] d[e] d[n] d[c] d[e]

i – стоп-символ

S на j – d[i]

s: string;

s:= ’паскаль’;

Максимальный объем – 256 байт (0..255). 0-позиция – это длина строки (хранится в виде кода символа).

S 7(код) п а с к а л ь    
                   

 

writeln(s);

writeln(ord(s[0]); { = > 7 }

s[0]:=chr(3);

wrtieln(s); { = > «пас» }

Также длину строки можно ограничить:

s: string[11] { занимает 12 байт }

1) Конкатенация (объединение, обозначается как «+»)

2) Разрешено сравнивать строки разной длины (существующий символ всегда больше отсутствующего)

3) Строки можно вводить с помощью read (вводится количество символов равное длине строки или меньшее, если раньше достигнут код клавиши Enter)

s1, s2, s3:string[15];

q:boolean;

s1:=’london’;

s2:=’jack’;

s3:= s2 + ‘ ‘ + s1; { конкатенация s3=’jack london’ }

q:= ‘ borland pascal’ < ‘ turbo’ { true }

q:= ‘tu r bo pascal’ > ‘ turbo’ { true }

ü Функция copy(str1, start, n) возвращает подстроку str1, cостоящую из n символов начиная с позиции start.

s:=’ turbo pascal ’;

s:=copy(s,7,6); { s=’pascal’ }

ü Процедура instert(insrt, str, start) предназначена для вставки строки insrt в строку str, начиная с позиции start.

s1:= ’frnd’

insert(‘ ie’, str, 3); { s1=’friend’ }

s1:=’ children ’;

delete(s1, 6, 3); { s1=’child’ }

ü Функция pos(substr, str) возвращает начальную позицию подстроки substr в строке str

pos(‘ f(x) ’, ‘ let f(x)=2x’ ); { результат 5 }

Если подстрока не встречается pos вернет 0.

ü Функция length(str) возвращает длину строки str

ü Процедура str(num,strnum) преобразовывает числовое значение num в строку strnum.

ü Процедура val(strnum, num, errcode) выполняет обратное преобразование, где errcode - 0, при условии выполнения преобразования им номеру позиции strnum ….

n=160.236;

str(n:5:2,s2); { s 2=’160,24}

s1:=’150’;

val(s1, num, code); { num=150 code=0 }

Пример. Заменить все вхождения подстроки w в строке str на подстроку v.

procedure subst(w, v:string, var str: string);

var k:byte;

while pos(w, str)<>0 do begin

k:=pos(w, str);

delete(str, k, length(w));

insert(v, str, k);

end;

end;

Пример. Посчитать сумму цифр, встречающихся в str.

function summa(str:string):integer;

var I,k,d,s:integer;

s:=0;

for i:=1 to length(str) do begin

val(str[i], d, k);

if k=then s:=s + d;

end;

summa:=s;

end;


ЛЕКЦИЯ №14.

Запись(комбинированный тип) – это структурированный тип данных, состоящий из нескольких компонент, которые часто называют полями.

В отличии от массивов компоненты (поля), образующие запись могут относиться к разным типам, и доступ к ним осуществляется по имени поля.

При объявлении записи указывают имя и тип каждого поля. Описание записи начинается служебным словом record и заканчивается словом end.

<== предыдущая лекция | следующая лекция ==>
Поиск подстроки | Массивы записей
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 283; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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