Этапы разработки программы. Разработка или выбор алгоритма решения поставленной задачи. Оформление документации на программу, страница 23

Доступ к отдельным элементам строки производится аналогично доступу к элементам однородного массива

Var s: string;

begin s[1]:=’A’;{или s[1]:=#65 или s[1]:=chr (65)

Кроме стандартной функции length  Turbo Pascal представляет еще ряд функций и процедур для обработки строк.

Функции работы со строками:

  1. Функция Copy – копирует фрагмент строки из одной переменной строкового типа в другую. В общем виде обращение к функции Copy выглядит так:

s:=Copy (строка, p, n), где

Строка - выражение строкового типа, содержащее строку, фрагмент которой надо получить;

р - номер первого символа в строке, с которого начинается выделяемая подстрока;

n – число копируемых символов (т.е. длина выделяемой подстроки);

s – переменная строкового типа.

Пример  Var str: string[80];

p-str1, p-str2: string[20];

begin

str:=’программирование’;

p-str1:=Copy (str, 8, 3); {мир}

p-str2:=Copy (str, 17, 2); {результат строки нулевой длины}

  1. Функция Pos – позволяет определить положение подстрок в строке. В общем виде обращение к функции выглядит так:

р:= (Подстрока, строка); где

Подстрока– строковая константа или переменная, которую нужно найти в строковой константе или переменной строка. Если заданный фрагмент в строке отсутствует, то функция возвращает Æ.

Пример  Var str: string[80];

fr: string[20];

p: integer;

begin

str:=’программирование’;fr:=’Мир’;

p:=Pos (fr, str);

if p<>0 then writeln (‘Фрагмент’,fr,’содержится в строке’,str);

end.

  1. Функция Up Case – преобразует строчный символ в прописной.

Пример  Var str: string;

i: byte;                                

begin

write (‘ввод строки строчных букв’);

readln (str)

for i:=1 to length (str) do

str[i]:=Up Case (str[i]);

writeln (str);

end.

Процедуры работы со строками.

  1. Процедура Delete – удаляет фрагмент из строки. В общем виде обращение к процедуре выглядит так:

Delete (строка, p, n) – где строка – переменная строкового типа;

р – номер символа, с которого начинается удаляемая подстрока;

n – длина удаляемой подстроки.

  1. Insert – вставляет фрагмент из одной строки в другую.

Пример Insert (str1, str, n) – в строку str перед n-й позицией вставляется строка str1.

Замечание Во избежании ошибок при применении процедур Insert и Delete указанные в списке параметров позиции должны обязательно присутствовать в образованных строках.

3.Процедура Val (str, x, code) – преобразует строковое представление числа str в величину целого или вещественного типа х. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code, если ошибка обнаружена (например, символьное значение переводится в число), переменная Code будет содержать номер позиции первого ошибочного символа, а значение х неопределенно.

4.  str (x, s) – преобразует выражение вещественного или целого типа в его строковое представление.

Пример Дан текст. Слова в тексте разделяются пробелами:

1) Найти в тексте все слова, в которых количество букв ‘a’ и ‘b‘ – максимально;

2) В словах оканчивающихся на ing, окончание ing заменить на ed.                            Var text: string;

mas_sl: array[1..30] of string[20]; {одномерный массив строк}

kol: array[1..30] of integer; {доля букв а и b в каждом слове}

k, max, i, j: integer;

begin

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

mas_sl[k]:=’’;

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

if text[i]<>’ ‘ then mas_sl[k]:= mas_sk[k]+text[i]

else k:=k+1;

end;

for i:=1 to k do

begin kol[i]=0;

for j:=1 to length (mas_sl[i]) do

if mas_sl[i][j]=’b’

kol[i]=kol[i]+1;

end;

max=kol[1];

for i:=2 to k do if kol[i]>max max=kol[i];

writeln (‘слова с максимальным количеством букв ‘a’ и ‘b’);

for i:=1 to k do

if kol[i]=max writeln (mas_sl[i]);

for i:=1 to k do

begin p:=pos(‘ing’, mas_sl[i]);

if p>0 then begin Delete (mas_sl[i], p, 3);

Insert (‘ed’, mas_sl[i], length (mas_sl[i]+1);

end;

writeln (‘измененные слова’)

for i:=1 to k do

writeln (mas_sl[i]);

end;