Строки
Оценка 4.7 (более 1000 оценок)

Строки

Оценка 4.7 (более 1000 оценок)
ppt
31.03.2020

150.000₽ призовой фонд • 11 почетных документов • Свидетельство публикации в СМИ

Опубликовать материал

Строки. Обработка строк.ppt

Программирование. Строки и символы в PascalABC.net

Описание переменных:

Строки в Паскале – это данные типа string.
var
s: string;
s1: string[9];
s2: shortstring; // синоним string[255]
Они используются для хранения последовательностей символов.

В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа.

Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.

Примеры описания строк:

var s: string;
s1: string[9];
s2: shortstring;
begin
s := 'PascalABC.NET';
writeln(s,' ',s.Length);
SetLength(s,20);
writeln(s,' ',s.Length);
s1 := s;
writeln(s1,' ',s1.Length);
end.

Символ строки

К отдельному символу строки можно обращаться как к элементу массива символов, например s1[3]. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:

s1[3] := 'h';
writeln (s2[3] + 'r');

Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки.

Например:

writeln(ord(st[0]));

Процедуры и функции для работы со строками

Функция Concat (s1, s2, ..., sn) 
возвращает строку, являющуюся слиянием строк s1, s2, ..., sn.
Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s.
Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len.

Процедуры и функции для работы со строками

Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.
Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte.
Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s.

Строки и массивы символов

array of char
рассматриваться как строка постоянной длины 

Вставка подстроки

Задача: 
Вставить в заданную позицию строки другую строку.

var
s1,s2: string;
i: byte;
Begin
write(‘Программа для вставки в заданную позицию строки другую строку');
write(‘Введите первый текст: ');
readln(s1);
write(‘Введите второй текст: ');
readln(s2);
write(‘Введите номер позиции, в которую надо вставить второй текст: ');
readln(i);
insert(s2,s1,i);
writeln(s1);
end.

Замена подстроки в строке

var
s,s_old,s_new: string;
i,l_old: byte;
begin
write(‘Ведите текст: ');
readln(s);
write(‘Что заменить?');
readln(s_old);
l_old := length(s_old);
write(‘ Чем заменить? ');
readln(s_new);
i := pos(s_old,s);
delete(s,i,l_old);
insert(s_new,s,i);
writeln(s);
readln
end.

Задача: 
Найти в строке определенную последовательность символов и заменить ее другой.

Копирование части строки

Задача: 
Скопировать часть строки с определенной позиции и определенной длины в другую строку.

var
s1,s2: string;
n,len: byte;
begin
write('Введите текст: ');
readln(s1);
write('Введите номер позиции, с которой будет копироваться строка: ');
read(n);
write(‘Введите длину копируемой части: ');
readln(len);
s2 := copy(s1,n,len);
writeln('Ты скопировал: ',s2);
readln;
end.

Удалить пробелы между первым и вторым вопросительным знаком

var
str: string;
q1, q2, l, i: byte;
begin
readln(str);
l := length(str);
q1 := 0;
q2 := 0;
for i:=1 to l do
if str[i] = '?' then begin
q1 := i;
break;
end;

for i:=q1+1 to l do
if str[i] = '?' then begin
q2 := i;
break;
end;
if (q1 <> 0) and (q2 <> 0) then begin
q1 := q1 + 1;
while q1 < q2 do
if str[q1] = ' ' then begin
delete(str,q1,1);
q2 := q2-1;
end
else
q1 := q1 + 1;
writeln(str);
end;
end.

Задача: 
Во введенной строке удалить пробелы между первым и вторым вопросительным знаком.

Задача

Дана непустая строка S и целое число N (>0). Вывести строку, содержащую символы строки S, между которыми вставлено по N символов «*» (звездочка).

program zvezda;
Var s:string;
N,i:integer;
C:char;
Begin
Writeln('stroka');
Readln(s);
Writeln('n');
Readln(n);
C:='*';
For  i:=1 to n do
Insert(c,s,n);
Writeln(S);
End.

Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз

Задача

program m2;
var s:String;
i,j,n,k:Integer;
f:Boolean;
begin
Writeln('Введите строку:'); Readln(s);
n:=Length(s);
for i:=1 to n do begin f:=True;
for j:=1 to n do if (i<>j) and (s[i]=s[j]) then f:=False;
if f and (k=0) then
Writeln('Символы,которые встречаются в строке один раз:');
if f then begin Write(s[i],' ');
inc(k);
end;
end;
if k=0 then Writeln('В строке нет символов которые встречаются всего один раз.');
Readln;
end.

Источники

http://templated.ru/ingeneriya/117-informacionnye-tehnologii.html
http://pascalabc.net/wiki/index.php?title=Строки_и_символы._Тексты_программ
http://www.cyberforum.ru/pascalabc-net/thread1266946.html
http://pas1.ru/book/export/html/300
http://programmado.ru/55-stroki-v-paskale-tip-string.html
http://mojainformatika.ru/paskal/uroki-paskal-stroki/116-stroki-v-paskal.html
http://nschool.by/text.php?cat=library&textid=10




скачать по прямой ссылке