Переменные типа 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
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.


Комментарии
Комментариев пока нет - будьте первым.