Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
33
Добавлен:
10.12.2013
Размер:
56.83 Кб
Скачать

Функции обработки строковых переменных.

length (x: STRING): BYTE

k: =lenght (word); (k=14)

  • подсчитывается фактическая длина строки, включая _ .

copy (x: STRING, i, N): STRING

  • копируется фрагмент строки из одной переменной в другую.

x - переменная из которой копируется фрагмент;

i - позиция с которой копируется;

N - количество копируемых символов.

Если i и N - вне пределов строки, сообщения об ошибке не будет

при i>langth(x) - результат - строка нулевой длины копируется;

при N>length (x) - фрагмент от i до конца строки (x).

a:= 'электрофикация'

b:='фикция'

pos (a: STRING, b: STRING): BYTE

  • осуществляет поиск фрагмента a в строке b. Результатом этой функции: позиция вхождения a в b. Если фрагмент не найден - результат 0.

k:= pos (a, b);

если a:='ритм';

b:='алгоритм';

то - k=5

Процедуры.

insert (a, b, i) - вставить a в b начиная с i.

delete (a, i, N) - удалить из a с позиции i - N символов

если b:='алгоритм'

delete (b, 1, 4)

тогда b:='ритм'.

i, N - в процедурах insert и delete обязательно должны присутствовать в строке. Иначе - сообщение об ошибке.

Рассмотрим фрагмент

for i:=1 to length (word) do

word [i]:= upcase (word[i]);

Поменяет все строчные в прописные (только латинские буквы).

Str (i: integer, w: string): STRING;

- преобрзует численное значение х в его строковое представление;

val (w: string, i: integer, j: integer): INTEGER;

- преобразует строковое значение в его численное представление

val (‘1945’)=1945

val (‘12’, i, j); str(i, w1);

writeln (i, w1); 12 12 - на экране.

Если val (‘12a’, i, j), то j=3? Проверить!!!

Задача: в произвольном тексте заменить все “чя” на “ча”.

Program pp;

var

text: string;

i: integer;

begin

readln (text);

for i:=1 to length (text)-1 do

if copy (text, i, 2)=‘чя’ then

begin

delete (text, i+1, 1);

insert (‘a’, text, i+1);

end;

text [i+1]=‘a’

writeln (text);

end.

Задача: подсчитать сколько раз слово word встретилось в тексте text и первую букву в этом слове сделать заглавной (текст латинский).

Program word_ text;

var

text, word: string;

s, i: integer;

begin

writeln (‘Введите текст’); readln (text);

s: =0

writeln (‘Введите слово’); readln (word);

for i:=1 to length (text) - lenght (word)+1 do

if copy (text, i, length (word))=word then

begin

s:=s+1;

word [i]:=upcase (word [i]);

end;

writeln (s);

end.

Задача: заменить в произвольном тексте все word1 слова на слово word2.

Program ww;

var

text, word1, word2: string;

i: integer;

begin

readln (text); readln (word1); readln (word2);

repeat

i:=pos (word1, text)

if i<>0 then

begin

delete (text, i, length (word1));

insert (word2, text, i);

end;

until i=0;

writeln (text);

end.

Задача: составить программу заменяющую все малые буквы русского алфавита на большие.

Program pp;

var

t: string;

p: char;

k, i: byte;

begin

readln (t); (ввод текста);

for i:=1 to length (t) do

begin

k:=ord (t[i]);

Заменить

if k>=160 and k<=175 then

begin

delete (t, i, 1);

insert (chr (k-32), t, i);

end;

if k>=224 and k<=239 then

begin

delete (t, i, 1);

insert (chr (k-80), t, i);

end;

if k=241 then

begin

delete (t, i, 1);

insert (‘Е’, t, i);

end;

en

writeln (t);

end.

Тип pchar.

Возможен второй способ реализации строковых переменных - тип pchar. Текущая длина строки фиксируется специальным символом - признаком, который ставится после последнего смыслового символа строки. Это символ с нулевым кодом. Такой способ указания длины позволяет хранить в строковых переменных типа pchar до 65533 символов (размер в один сегмент памяти).

Строки с нулевой базой, или с завершающим нулем называются ASCIIZ - строками.

При работе с ASCIIZ - строками используют некоторые функции стандартного модуля STRINGS.

Подключение модуля к программе:

uses strings; (после слова program....);

Соседние файлы в папке Лекции