Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Обработка символьной информации. Процедуры и функции обработки строк.






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

Delete (St, Poz, N) – удаление N символов строки St, начиная с позиции Poz.

Insert (Str1, Str2, Poz) – вставка строки Str1 в строку Str2, начиная с позиции Poz.

Пример:

Var

S1, S2, S3: String[11];

...

S1: =' Pentium ';

S2: ='V';

S3: =Insert (S1, S2, 10);

В результате выполнения последнего выражения значение строки S3 станет равным 'Pentium V'.

Str (I, St) – преобразование числового значения величины I (целого или вещественного типа) и помещение результата в строку St. После I может записываться формат, аналогичный формату вывода. Если в формате указано недостаточное для вывода количество разрядов, поле вывода расширяется автоматически до нужной длины.

Val (St, I, Cod) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в I. Значение St не должно содержать незначащих пробелов в начале и в конце. Cod — целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Cod равно нулю, если ошибка обнаружена (например, литерное значение переводится в цифровое), Cod будет содержать номер позиции первого ошибочного символа, а значение I не определено.

Функции

Copy (St, Poz, N) – выделяет из строки St подстроку длиной N символов, начиная с позиции Poz.

Concat (Str1, Str2,..., StrN) – выполняет сцепление строк Str1, Str2,..., StrN в том порядке, в каком они указаны в списке параметров.

Выражение Результат

Pos (Str1, Str2) – обнаруживает первое появление в строке Str2 подстроки Str1. Результат имеет целочисленный тип и равен номеру той позиции, где находится первый символ подстроки Str1. Если в Str2 подстроки Str1 не найдено, результат равен 0.

Примеры программ обработки строк

1. Дана строка. Слова в строке разделены одним пробелом, в конце строки точка. Распечатать слово максимальной длины.

Program Max_Length;

Var

St, St1: String;

n, i, ns, ds, d, d_max: Integer;

Begin

WriteLn ('Введите строку');

ReadLn(St);

d: =Length(st);

ns: =1;

d_max: =0;

For i: =1 to d do

If ((St[i]=' ') or (St[i]='.')) then

begin

ds: =i-ns;

If ds> d_max then

begin

d_max: =ds;

st1: =Copy(st, ns, ds);

end;

ns: =i+1;

end;

WriteLn ('Слово максимальной длины: ', st1);

End.

2. Дан текст Txt. Вставить строку St1 в текст Txt после строки St2.

Program Vstavka; {вставка}

Label m1;

Var

i, j, n, n1, n2, k, fl: Integer;

str1, str2, txt: String;

Begin

WriteLn ('Введите исходный текст: ');

ReadLn (txt);

WriteLn ('Введите вставляемый текст: ');

ReadLn (str1);

WriteLn ('Введите текст, после которого нужна вставка: ');

ReadLn (str2);

n: =Length (txt);

n1: =Length(str1); Скоро уа ура ура каникулы.

n2: =Length (str2);

For i: =1 to n do

begin

fl: =0;

If (txt[i]=str2[1]) then

begin

j: =i;

for k: =1 to n2 do

begin

if (txt[j]=str2[k]) then fl: =1

else

begin

fl: =0;

goto m1;

end;

j: =j+1;

end;

end;

If (fl< > 0) then

begin

insert (str1, txt, j);

n: =n+n1;

end;

m1: end;

WriteLn ('Полученный текст: ');

WriteLn (txt);

End.

3. Дан текст Txt. Заменить любое вхождение строки St1 на строку St2.

Program zam; {замена}

Label m1;

Var

d2, k: Integer;

s, str1, str2, txt: String;

Begin

WriteLn('Введите исходный текст: ');

ReadLn (txt);

WriteLn ('Введите замещающий текст: ');

ReadLn (str1);

WriteLn ('Введите текст, вместо которого нужна замена: ');

ReadLn (str2);

d2: =Length(st2);

Repeat

k: =Pos(str2, txt);

If k< > 0 then

begin

Delete (txt, k, d2);

Insert(st1, txt, k);

end;

Until k=0;

WriteLn('Полученный текст: ');

WriteLn (txt);

End.

4. Дан текст Txt. Удалить строку St из текста.

Program Udal; {удаление}

Var

str, txt: String;

n, k: Integer;

Begin

WriteLn('Введите исходный текст: ');

ReadLn (txt);

WriteLn ('Введите удаляемый текст: ');

ReadLn (str);

n: =Length(str);

Repeat

k: =Pos(str, txt);

If k< > 0 then

Delete (txt, k, n);

Until k=0;

WriteLn('Полученный текст: ');

WriteLn (txt);

End.

5. Дана строка, содержащая список фамилий, разделенных одним пробелом. Отсортировать его в алфавитном порядке.

Program alf;

Var

st, z: String;

A: array[1..10] of String[10];

i, k, j, sl, ds: Byte;

Begin

k: =1;

WriteLn('Введи список фамилий: ');

ReadLn(st);

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

For i: =1 to Length(st)-1 do

If (st[i]=' ') then inc(k)

else A[k]: =A[k]+st[i];

writeln;

{сортировка массива слов}

For j: =1 to k-1 do

For sl: =1 to k-j do

begin

If Length(A[sl])< Length(A[sl+1]) then

ds: =Length(A[sl+1])

else ds: =Length(A[sl]);

For i: =1 to ds do

begin

If A[sl][i]> A[sl+1][i] then

begin

z: =A[sl];

A[sl]: =A[sl+1];

A[sl+1]: =z;

break;

end;

If A[sl][i]< A[sl+1][i] then break;

end;

end;

WriteLn ('Упорядоченный список: ');

For i: =1 to k do Write(A[i], ' ');

Repeat Until Keypressed;

End.

6. Дан массив строк. Отсортировать его в алфавитном порядке.

Program Sorta;

Type

indata=String[80];

mas=array[1..80] of indata;

Var

st: mas;

i, n: integer;

Procedure Sortstring(var inm: mas; n: Integer);

Procedure Insort(L, R: Integer; var M: mas);

Var

a, b: indata;

i, j: integer;

Begin

i: =L;

j: =R;

a: =M[(l+r)div 2];

Repeat

While M[i]< a do i: =i+1;

While A< m[j] do j: =j-1;

If i< =j then

begin

b: =M[i]; M[i]: =M[j];

M[j]: =b; i: =i+1; j: =j-1;

end;

Until i> j;

If l< j then Insort(l, j, m);

If l< r then Insort(i, r, m);

end;

Begin

Insort (1, n, inm);

End;

Begin {основная программа}

WriteLn ('Введите количество строк');

ReadLn (n);

WriteLn ('Введите строки');

For i: =1 to n do

ReadLn (st[i]);

WriteLn ('Исходный массив строк: ');

For i: =1 to n do

WriteLn (st[i]);

Sortstring(st, n);

WriteLn ('Отсортированный массив строк');

For i: =1 to n do

WriteLn (st[i]);

End.

7. Дан массив строк. Отсортировать его по длине строк.

Program sortd;

Type

indata=String[80];

mas=array[1..80] of indata;

Var

St: mas;

i, n: integer;

Procedure Sortstring(var M: mas; n: integer);

Var

min, i_min, k, i, j: integer;

r: indata;

Begin

For k: =1 to n-1 do

begin

min: =Length(M[k]);

i_min: =k;

For i: =k to n do

If Length(M[i])< min then

begin

min: =Length(M[i]);

i_min: =i;

end;

r: =M[k];

M[k]: =M[i_min];

M[i_min]: =r;

end;

End;

Begin

WriteLn ('Введите количество строк: ');

ReadLn (n);

WriteLn ('Введите строки: ');

For i: =1 to n do

ReadLn (St[i]);

WriteLn ('Исходный массив строк: ');

For i: =1 to n do

WriteLn (St[i]);

Sortstring(St, n);

WriteLn ('Отсортированный массив строк');

For i: =1 to n do

WriteLn (St[i]);

End.

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.