Скачиваний:
46
Добавлен:
10.02.2015
Размер:
407.04 Кб
Скачать

Практикум 11. Работа со строками

1.Типы строк в DELPHI.

2.Использование функций и процедур работы со строками.

3.Разбить строку на слова.

4.Сортировка слов по различным критериям.

Типы строк в DELPHI.

Строка в DELPHI - это одномерный массив символов, организованный специальным образом. Различают два вида строк по признаку статического или динамического выделения памяти под массив.

Var s80 : string[80];// Статическое sd : string; // Динамическое

begin

s80:=' Static string length='; // size=81 writeln(s80,length(s80),' size=',sizeof(s80)); sd:=' Dynamic string length='; // size=4 writeln(sd, length(sd), ' size=',sizeof(sd)); readln;

end.

У статического массива текущая (актуальная) длина хранится как число типа BYTE в нулевом элементе. Ее можно посмотреть непосредственно writeln(byte(s80[0])); Максимальная длина статической строки 255 символов.

Для динамических строк элемент sd[0] не доступен. Получить информацию о текущей длине такой строки можно только через функцию length(sd). Управление текущей длиной строки осуществляется с помощью символа #0 (нуль-терминатор), которым обозначается конец строки. Посмотреть на него можно, например так: writeln(byte(sd[length(sd)+1]));

Задание 1

Дана строка произвольной длины, состоящая из слов, знаков препинания и других разделителей

Сформировать из этой строки массив слов, не содержащий разделителей (создать словарь)

Каркас приложения

Type Tw = array[1..100] of string;

Var s : string;

BEGIN

s:=' Two Ticket to Dublin! Kuda Blin?’+

’ To Dublin..., Cost= 123.00: '; writeln(s);

readln;

END.

Функция удаления знаков препинания с подсчетом числа удалений

//Константа – множество символов, подлежащих

//удалению из строки. Ее надо объявить в разделе

//описаний.

Const ZnakP : set of Char=

['.',',',':',';','?','!','=','-'];

Function DelZnakP(Var s : string) : word;

Var i : word;

Begin Result:=0;

for i:=1 to length(s) do if s[i] in ZnakP then

begin inc(Result); s[i]:=' '; end;

End;

Основная программа

Var s : string; BEGIN

s:=' Two Ticket to Dublin! Kuda Blin? To Dublin..., Cost= 123.00: ';

writeln(s);

writeln('Delete Znak = ', DelZnakP(s)); writeln(s);

readln;

END.

Функция формирования массива слов. Часть 1. Подготовка строки

Function StrToWord(s : string; Var w : Tw) : word; Begin

Result:=0;

//Если строка изначально пустая строка - выход if s='' then Exit;

//Убрать повторяющиеся пробелы

while pos(' ',s) <> 0 do delete(s, pos(' ',s),1);

//Если строка состоит из одного пробела - выход if s=' ' then Exit;

//Убрать первый пробел (если он есть)

if s[1]=' ' then delete(s,1,1);

// Добавить последний пробел (если его нет) if s[length(s)]<>' ' then s:=s+' '; writeln(s); // Отладка

Функция формирования массива слов. Часть 2. Формирование массива.

//Цикл ниже выполняется пока строка не будет

//пустой

while s<>'' do begin

//Нашли очередное слово inc(Result);

//Скопировали его в элемент w[Result]:=copy(s, 1, pos(' ',s)-1);

//Убрали из исходной строки delete(s,1,pos(' ',s));

writeln(w[Result]); // Для отладки end;

End;

Соседние файлы в папке Практикумы 1 курс