Функции. 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;