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

 

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

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