Для работы со строковыми переменными в Паскале существует набор стандартных
процедур и функций. Их применение упрощает решение задач. Хочу напомнить что
результат выполнения функции должен быть запомнен в переменной соответствующего
типа, если конечно она, функция, не является элементом выражения.
20.1 Функция копирования строки
или ее части.
S:=COPY(строка,
позиция, N);
Функция копирования называется также "вырезкой". Результатом выполнения
функции будет часть строки начиная с указанной позиции длиной N.
Код программы для решения задачи из 19 урока будет выглядеть иначе с
применением данной функции.
Пример 1.
Дано слово, состоящее из четного числа букв. Вывести на экран его первую
половину.
Var x:byte;
a:string;
begin
repeat
write('Введите слово из четного числа букв');
readln(a);
x:=length(a); {определяем длину слова}
until (x mod 2 = 0);
x:= x div 2; {применяем целочисленное деление}
write(copy(a,1,x); {вместо оператора цикла}
readln
end.
20.2 Функция поиска подстроки в
строке.
N:=POS(подстрока,
исходная строка)
Функция определяет, содержится ли подстрока в исходной строке, и если да то
определяет номер символа в исходной строке с которого начинается подстрока. Если
такого символа нет, то значение функции будет равно нулю. Подстрока может
состоять и из одного символа.
Рассмотрим задачу из 19 урока.
Дано предложение. Определить порядковый номер первой встреченной буквы 'к'.
Если такой буквы нет, сообщить об этом.
Var x:byte;
a:string;
begin
write('Введите
предложение');
readln(a);
x:=pos('к',a);
if x=0 then writeln('
Такой
буквы
нет')
else writeln(x);
readln
end.
20.3.Процедура удаления части строки
DELETE(строка,
начальный номер,
количество символов)
Удаляет из исходной строки указанное количество символов.
Пример из 19 урока.
Дано слово, состоящее из четного числа букв. Вывести на экран его первую
половину.
Var i,x:byte;
a,p:string;
begin
repeat
write('Введите слово из четного числа букв');
readln(a);
x:=length(a); {определяем длину слова}
until (x mod 2 = 0);
x:= x div 2; {применяем целочисленное деление}
delete(a,x+1,x);
write(а);
readln
end.
20.4.Процедура вставки подстроки
в строку
INSERT(строка1,
строка2,
позиция);
Строка1 вставляется в строку2 начиная с указанной позиции.
Тренировочные задания.
1. Дано предложение. Определить число вхождений в него некоторого символа.
2. Дано предложение. Заменить в нем все вхождения буквосочетания "ах" на "ух".
3. Дано слово. Проверить, является ли оно "перевертышем", т.е. читается
одинаково как с начала, так и с конца.
4. Дано слово:
a. удалить из него первую из букв "о", если такая буква есть;
b. удалить из него последнюю из букв "т", если такая буква есть.
5. Дано предложение. Удалить из него все буквы "с".
1. Дано слово. Получить его часть, образованную идущими подряд буквами, начиная
с m-й и кончая n-й (m<n).
Var i,m,n:byte;
a,b:string;
begin
write('Введите
слово');
readln(a);
write('Введите
значения
m
и
n (m<n)');
readln(m,n);
b:='';
if length(a)>=n then for i:=m to n do b:=b+a[I];
writeln(b);
readln
end.
2. Дано слово из четного числа букв. Поменять местами его половины.
Var i,x,y:byte;
a,b:string;
begin
repeat
write('Введите слово из четного числа букв');
readln(a);
x:=length(a); {определяем длину слова}
until (x mod 2 = 0);
y:= x div 2;
b:=''; {применяем целочисленное деление}
for i:=y+1 to x do b:=b+a[I];
for i:=1 to y do b:=b+a[i];
write(a);
readln
end.
5. Дано предложение. Напечатать все его буквы "и".
Var i,m,n:byte;
a:string;
begin
write('Введите слово');
readln(a);
x:=length(a); {определяем длину слова}
for i:=1 to x do if a[I]='и' then write('и');
readln
end.