Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
12.05.2015
Размер:
324.1 Кб
Скачать

Строки

1

Типы строк

В Паскале три типа строк:

стандартные (string);

определяемые программистом на основе string;

строки в динамической памяти.

Строка типа string может содержать до 255 символов. Под каждый символ отводится по 1 байту, в котором хранится код символа. Еще один байт отводится под фактическую длину строки

2

Описание строк

type str5 = string [5];

const n = 10;

 

 

var s : string;

{ строка стандартого типа }

s1

: str5;

{ строка типа str5 }

s2

: string [n];

{ описание типа задано

при описании переменной }

3

Операции со строками

Присваивание

s := s1;

Конкатенация

s1 := ’кар’ + ’туз’;

Сравнение

if s3 > s1 then ...

Ввод-вывод – как целиком, так и посимвольно.

4

Процедуры и функции

Процедура Delete(s, start, len)

Процедура Insert(subs, s, start)

Процедура Str(x, s)

Процедура Val(s, x, errcode)

Функция Length(s)

Функция Pos(subs, s)

Функция Concat(s1, s2, ..., sn)

Функция Copy(s, start, len)

Функция UpCase(s[i])

5

Пример

Программа, которая читает текст из файла и выводит его на экран, заменяя заданную с клавиатуры последовательность символов на многоточие.

6

Алгоритм

1.Построчно считывать текст из файла.

2.Для каждой строки проверять, содержится ли в ней заданная последовательность.

3.Если да, заменяет заданную с клавиатуры последовательность символов на многоточие.

4.При выходе из цикла выводит строку на экран.

7

Delete(str, i, dl);
Insert('...', str, i); end;

Программа

Program Change_word;

f : text;

i, dl : integer;

var

s, str : string[80];

begin

assign(f, 'primer.txt'); reset(f); writeln('Какое слово заменять?'); readln(s); dl := length(s);

while not Eof(f) do begin readln(f, str);

i := 1;

while i<>0 do begin i := Pos(s, str);

if i<>0 then begin

end;

 

writeln(str);

 

end;

 

close(f)

 

end.

8

Фрагменти програм

Var

st : string;

i, k : integer;

Приклад 1.

{ Підрахувати кількість літер а у рядку.}

-------------------------------------

k:=0;

for i:=1 to length(st) do

if st [i] =’a’ then k:=k+1;

------------------------------------

Приклад 2.

{ Замінити ‘раз’ на ‘роз’}

-------------------------------------

While Pos(‘раз’, st) <> 0 do

St [Pos(‘раз’, st) +1]:=’o’;

Приклад 3.

{ підрахувати кількість слів у рядку (між словами пробіл, в кінці крапка)}

-------------------------------------

k:=0;

for i:=1 to length(st)-1 do

if (st[i] <>’ ‘ ) and ((st[i+1] = ‘ ‘) or (st[i+1] =’.’)) then k:=k+1;

9

-------------------------------------

 

Фрагменти програм

Var

st : string;

i, k : integer;

Приклад 4.

{ підрахувати кількість слів у рядку (між словами пробіл, в кінці крапка), які починаються на а}

-------------------------------------

st:=’ ‘ + st; k:=0;

for i:=1 to length(st)-1 do

if (st[i] = ’ ‘ ) and ((st[i+1] = ‘a ‘) or (st[i+1] = ‘A ‘)) then k:=k+1;

-------------------------------------

Приклад 5.

{ видалити пробіли на початку рядку }

 

-------------------------------------

 

While st[1] = ‘ ‘ do Delete (st, 1, 1);

 

-------------------------------------

 

Приклад 6.

 

{ видалити зайві пробіли між словами}

 

-------------------------------------

 

While Pos (“ “, st) <> 0 do Delete (st, Pos (“ “, st), 1);

 

-------------------------------------

10