
Функции обработки строковых переменных.
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....);