Для упрощения работы с массивами символьных переменных существуют строковые переменные, содержащие от 0 до 255 символов.
ОПИСАНИЕ СТРОКОВОЙ ПЕРЕМЕННОЙ
Описание строковой переменной осуществляется в разделе VAR с помощью служебного слова STRING.
VAR имя:STRING[ длина ];,
где имя - имя строковой переменной;
длина - максимальное количество символов в строковой переменной, фактически может
быть меньше.
Длину можно не указывать, тогда она считается равной 255:
VAR a:string;
ПРИСВОЕНИЕ ЗНАЧЕНИЙ СТРОКОВЫМ ПЕРЕМЕННЫМ
Примеры: а:='школа';
b:='12345';
c:='';пустая строка, т.е. не содержит ни одного символа.
ВВОД СТРОКОВОЙ ПЕРЕМЕННОЙ
Осуществляется так же, как и ввод числовых переменных:
READLN(A);
ВЫВОД СТРОКОВЫХ ПЕРЕМЕННЫХ
Осуществляется так же, как и вывод числовых переменных:
WRITELN(A);
КОНКАТЕНАЦИЯ (СОЕДИНЕНИЕ) СТРОК
Конкатенация строк осуществляется с помощью знака "+".
Пример: b:='Cидоров';
c:='Петя';
a:=c+' '+b;
в результате "а" получит значение "Петя Сидоров".
|
|
ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ СО СТРОКОВЫМИ ПЕРЕМЕННЫМИ
1. LENGTH - определение фактической длины строки.
обращение: имя:=length(строка);
Пример: h:='паровоз';
n:=length(h);
в результате "n" будет равно 7.
Задача. Определить количество букв "о" во введенном слове.
program prim;
var a:string;
l,i,s:integer;
begin
readln(a);
l:=length(a);
s:=0;
for i:=1 to l do
if a[i]='o' then s:=s+1;
writeln('количество букв о =',s);
end.
2. COPY - выделение части строки.
обращение: имя:=сopy(cтрока,нач.позиция,к-во_символов)
Пример. a:='паровоз';
b:=copy(a,3,3); {выделяем из строки А начиная с 3-го символа 3 символа}
в результате "b" будет равно "ров".
3. DELETE - удаление части строки.
обращение: delete(строка,нач.позиция,к-во_символов)
Пример. a:='паровоз';
delete(a,3,2); {удаляем из строки А начиная с 3-го символа 2 символа}
в результате "а" будет равно "павоз".
4. INSERT - вставка символов в строку.
обращение: insert(набор_символов,строка,позиция_вставки)
Пример. a:='паоз';
b:='ров';
insert(b,a,3); {набор символов из переменной "b" вставляется в строку "а"
начиная с 3-й позиции}
в результате "а" примет значение "паровоз"
5. POS - поиск подстроки в строке.
обращение: имя:=pos(подстрока,строка)
Ищется указанная подстрока в строке. Результат будет равен номеру первого символа строки, с которого обнаружено первое вхождение подстроки. Если подстрока не обнаружена, то результат будет равен 0.
Примеры: a:='паровоз';
1) n:=pos('o',a);
в результате "n" будет равно 4.
2) n:=pos('у',a);
в результате "n" будет равно 0.
6. STR - преобразование числового значения в строковое.
|
|
обращение: STR(число,строка);
Пример: var n:integer; a:string;
begin
n:=13;
str(n,a);
в результате переменная "а" получит значение '13'.
7. VAL - преобразование строкового значения в числовое.
обращение: VAL(строка,число,номер_неправ.символа)
номер_неправ. символа - переменная, в которую запоминается номер неправильного символа, в случае, если строковое значение нельзя перевести в числовое.
Пример. var n,k:integer;a:string;
begin
a:='13';
val(a,n,k);
в результате переменная "n" получит значение 13.
ЗАДАЧА. Составить программу,которая в введенном слове после каждой буквы А вставляет знак "-". Если букв А в слове нет, то программа работу заканчивает.
1 способ. Изменения происходят в том же введенном слове.
program prim;
var a:string;s,i,l:integer;
label 1,2;
begin
1:writeln('введи слово');
readln(a);
l:=length(a);
s:=0; {счетчик количества букв А}
i:=1; {берем первую букву}
repeat
if a[i]='a' then begin s:=s+1;
insert('-',a,i+1); {вставляем знак "-" после i-й буквы }
i:=i+1; { порядковый номер этого знака "-" в слове }
l:=l+1; { увеличиваем длину слова,т.к. вставили в него знак "-" }
end;
i:=i+1; {берем следующую букву в слове }
until i>l;
writeln('к-во букв "а" в слове =',s);
if s=0 then goto 2
else begin
writeln(a);
goto 1;
end;
2:end.
2 способ. Введенное слово остается неизмененным, а результат "собирается" в дополнительной строковой переменной.
program prim;
var a,b:string;
s,i,l:integer;
label 1,2;
begin
1: writeln('введи слово');
readln(a);
l:=length(a);
i:=pos('a',a); {определяем, есть ли буква "а" в слове}
if i=0 then goto 2;
s:=0; {счетчик букв "а" в слове }
b:=''; {строка-результат пока пустая}
for i:=1 to l do begin
b:=b+a[i]; { в строку "b" добавили i-ю букву из введенного слова }
if a[i]='a' then begin s:=s+1;
b:=b+'-'; { в строку "b" добавили знак "-" }
end;
end;
writeln('количество букв А в слове =',s);
writeln(b);
goto 1;
2:end.