Переменные типа string на самом деле являются массивами символов. Таким образом, обращение к отдельному символу строки осуществляется так же, как и к элементу массива.
Например:
s[7]:=’g’;
В языке Турбо-Паскаль существует ряд стандартных функций для работы со строками. Ниже приведены некоторые из них.
Length(s) – вычисляет текущую длину строки s;
Copy(s,x,y) – выделяет из строки s подстроку длиной y, начиная с x;
Concat(s1,…,sN) – соединяет строки s1, s2, … , sN;
Pos(s1,s2) – ищет подстроку s1 в строке s2.
Работу со строками рассмотрим на примере 14.
Задана строка символов. Группы символов, разделенные пробелом и не содержащие пробелов внутри себя, будем называть словами. Вывести все слова, имеющие среднюю для заданной строки длину.
Пример 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
uses Crt; var s : string; i,j : integer; l,n,len_sr : integer; word: boolean; BEGIN ClrScr; { Ввод строки } writeln('Введите строку'); readln(s); { Определение средней длины слова в строке } l:=0; { суммарная длина слов в строке } n:=0; { количество слов в строке } word:=false; { слово еще не началось } for i:=1 to length(s) do begin if ord(s[i])<>32 then begin l:=l+1; word:=true; { слово началось } end else if word then begin word:=false; n:=n+1; end end; if word then n:=n+1; len_sr:=round(l/n); { вычисление средней длины слова } writeln; writeln('Общее количество символов в словах: ',l:3); writeln('Количество слов в строке:',n:3); writeln('Средняя длина слова в строке:',len_sr:3); l:=0; { длина текущего слова } n:=0; { начало слова - номер элемента строки } word:=false; { слово еще не началось } for i:=1 to length(s) do begin if ord(s[i])<>32 then begin l:=l+1; if not (word) then begin word:=true; { слово началось } n:=i; end end else if word then begin word:=false; if l=len_sr then begin for j:=1 to l do write(s[n+j-1]); writeln; end; l:=0; end end; if word then if l=len_sr then begin for j:=1 to l do write(s[n+j-1]); writeln; end; readln; END. |