Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
ФункцииCopy (St, Poz, N) – выделяет из строки St подстроку длиной N символов, начиная с позиции Poz.
Concat (Str1, Str2,..., StrN) – выполняет сцепление строк Str1, Str2,..., StrN в том порядке, в каком они указаны в списке параметров.
Length (St) – вычисляет длину в символах строки St.
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.
|