Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр12_строк.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
89 Кб
Скачать
☆

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

Наименование

Назначение

insert(строка1, строка2, число)

Вставляет рядок1 в рядок2, начиная с позиции, заданной числом. Если в результате выходит строка длины больше максимальной, то он усекается дело.

delete(строка, число1,число2).

Удаляет из строки подстроку, начиная с позиции, заданной числом1, длиной, заданной числом2. Если число1 больше размера строки, то подстрока не удаляется. Если число2 больше начальных количества, то удаляются символы до конца строки

str(число[:M[:N]],строка).

Преобразование числа в строку. M задает общее количество символов, получаемых в строке, N – для вещественных чисел задает количество цифр в дробной части.

val(строка, число, код).

Преобразование строки символов во внутреннее представление числа. Код указывает номер неправильного символа или равный 0 в случае успешного преобразования.

Примеры:

Начальные данные: S=’крокодил’.

Оператор: d:=copy(s,3,3).

Результат: d=’око’.

. Оператор: val(‘+12.3’,v,k).

Результат: v=12.3, k=0 { преобразование прошло успешно}

Начальные данные: S=’крокодил’.

Оператор: insert(‘h’,d,3).

Результат: d=’окно’.

Начальные данные: S=’крокодил’.

Оператор: delete(s,1,1).

Результат: s=’роил’

Оператор: str(123,s).

Результат: s=’123’.

Начальные данные: S=’крокодил’.

Оператор: delete(s,4,3).

Результат: =’кроил’

.Оператор: val(‘23+5’,v,k).

Результат: v=неверно, k=3 { ошибка при попытке превратить третий символ}

Рассмотрим задачу по обработке строковых данных.

Пример. Заданна строка, состоящая из слов, разделенных одним или несколькими пробелами. Удалить повторные вхождения каждого слова.

Выделяем слова, переписываем их в первую строку двумерного массива, во вторую строку в соответствующую позицию записываем ‘0’ для уникального слова и ‘1’- для слова, которое повторяется. Потом формируем строку, которая состоит из элементов первой строки массива, в которых во второй строке записан '0‘ и распечатываем строку.

program ttt;

const nn=10;

type mas=array [1..2,1..nn] of string;

var a:mas;

n:integer;

s,ss:string; { начальная и вспомогательная строки}

и, j, k:integer;

begin

write(‘Введите строку : ’);readln(s);

s:=s+’ ’;j:=0; ss:=’ ’;

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

if (s[i]<>’ ’) and(s[i+1]=’ ’) { выделение слов}

then begin ss:=ss+s[i];j:=j+1;a[1, j]:=ss;a[2, j]:=’0’; ss:=’ ’;

{ в первую строку{ записываем слово}

end

{0’ во второй строке означает, что слово встретилось впервые}

else if s[i]<>’ ’ then ss:=ss+s[i];

for i:=1 to j-1 do for k:=i+1 to j do

if (а[2,i]<>’1’) and(а[2,k]<>’1’) and(а[1,i]=a[1,k]) then а[2,k]=’1’; { нашли слова, которые совпали}

s:=’ ’;

for i:=1 to j do if а[2,i]<>’1’ then s:=s+a[1,i]+’ ’;

writeln(‘Результат : ’,s);

end.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]