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

 

65

Программирование на языке Pascal

пользователь будет аккуратно разделять слова одним пробелом. Рассчитывать на это было бы наивным, поэтому при разработке программы будем считать, что слова могут разделяться любым количеством пробелов. В таком случае алгоритм подсчета количества слов будет состоять из следующих шагов:

Будем перебирать последовательно все символы в строке, от первого до последнего, и проверять следующее условие:

o если очередной проверяемый символ является пробелом, а предыдущий символ не является таковым, то прибавляем к счетчику слов единицу.

Упредложенного алгоритма есть две крайние ситуации:

1.Для первого символа не имеет смысла проверить предыдущий символ.

2.Последний символ может и не быть пробелом, но тогда предложенный алгоритм не учтет последнее слово.

Поэтому проверка этих условий должна включаться в общую схему алгоритма (проверки i<>1 и i=Length(s) в приведенном ниже коде).

Var

s : String; i,cnt : Integer;

Begin

WriteLn('Введите предложение'); ReadLn(s);

cnt:=0;

For i:=1 To Length(s) Do

If (s[i]=' ') And (i<>1) Or (i=Length(s)) Then If s[i-1]<>' ' Then cnt:=cnt+1;

WriteLn('Количество слов :', cnt);

End.

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

Для удобства работы со строковым переменными в синтаксис языка Pascal были введены некоторые функции, облегчающие работу со строками

Copy

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

исходная строка;

номер символа, с которого необходимо извлечь подстроку;

длина извлекаемой подстроки.

Например, в результате выполнения следующего кода

Var S:String;

Begin

S:='Маша ела кашу';

S:=Copy(S, 1, 4); WriteLn(S);

End.

будет выведено слово ‘Маша’, поскольку мы вырезали из исходной строки четыре символа, начиная с первого.

65

 

66

Программирование на языке Pascal

Pos

Ищет первое упоминание подстроки в строке и возвращает номер символа, начиная с которого заданная подстрока была найдена. Если подстрока найдена не было, функция возвращает в качестве своего значения 0.

Аргументами этой функции являются:

подстрока, которую необходимо найти;

строка, в которой производится поиск.

Вследующем примере мы из строки, содержащей адрес некоторого документа в Internet, будем извлекать адрес сервера, на котором этот документ находится. Т.е. если строка будет содержать адрес «http://www.specialist.ru/school/Default.aspx», то наша программа должна вернуть строку «www.specialist.ru». Функцию Pos будем использовать для поиска подстроки «://», после которой начинается адрес сервера и для поиска первого одинарного

слеша «/», перед которым этот адрес заканчивается.

Const CDELIM='://';

Var Url, Server: String; delim:Byte;

Begin

WriteLn('Введите адрес документа (URL):'); ReadLn(Url);

delim:= Pos(CDELIM, Url);

Url:=Copy(Url, delim+Length(CDELIM), Length(Url)-delim); Url:=Copy(Url, 1, Pos('/', Url)-1);

WriteLn('Сервер:' ,Url); End.

Insert

Позволяет вставить заданную подстроку в строку, начиная с указанной позиции. Если после вставки подстроки, длина получающейся строки превышает 255 символов, то все символы после 255-го будут отброшены.

Аргументами этой процедуры являются:

подстрока, которую необходимо вставить;

исходная строка, содержание которой необходимо изменить;

позиция, перед которой необходимо вставить фрагмент строки.

Следующий код

Var S:String;

Begin

S:='Маша кашу'; Insert(' ела', S, 5); WriteLn(S);

End.

выведет на экран строку ‘Маша ела кашу’.

Delete

Удаляет заданное количество символов из исходной строки, начиная с указанной позиции. Аргументами этой процедуры являются:

исходная строка, из которой необходимо удалить символы;

позиция, начиная с которой необходимо удалить символы;

количество удаляемых символов.

Вкачестве примера приведем следующий код программы:

Var S : String;

Begin

66

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]