Функции. Copy (St, Poz, N) – выделяет из строки St подстроку длиной N символов, начиная с позиции Poz. Значение St Выражение Результат 'ABCDEFG'

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

Значение St Выражение Результат
'ABCDEFG' Copy (St, 2, 3) 'BCD'

 

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

Выражение Результат
Concat ('AA', 'XX', 'Y') 'AAXXY'

 

Length (St) – вычисляет длину в символах строки St.

Значение St Выражение Результат
'123456789' Length (St)

 

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

Значение Str1 Выражение Результат
'abcdef' Pos('de', Str1)
'abcdef' Pos('r', Str1)

 

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

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.

 








Дата добавления: 2015-04-15; просмотров: 1353;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.042 сек.