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

В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками. Ниже приводится список этих процедур и функций с краткими пояснениями.

Length(s:string):integer

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

Пример.

n := length('Pascal'); {n будет равно 6}

Concat(s1,[s2,...,sn]:string):string

Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации "+" и работает немного менее эффективно, чем эта операция.

Copy(s:string; index:integer; count:integer):string

Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.

Пример.

s := 'Система Turbo Pascal';

s2 := copy(s, 1, 7); {s2 будет равно 'Система'}

s3 := copy(s, 9, 5); {s3 будет равно 'Turbo'}

s4 := copy(s, 15, 6); {s4 будет равно 'Pascal'}

Delete(var s:string; index,count:integer)

Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.

Пример.

s := 'Система Turbo Pascal';

delete(s,8,6); {s будет равно 'Система Pascal'}

Insert(source:string; var s:string;index:integer)

Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.

Пример.

s := 'Система Pascal';

insert('Turbo ',s,9); {s будет равно 'Система Turbo Pascal'}

Pos(substr,s:string):byte

Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.

Пример.

s := 'Система Turbo Pascal';

x1 := pos('Pascal', s); {x1 будет равно 15}

x2 := pos('Basic', s); {x2 будет равно 0}

Str(X: арифметическое выражение; var st: string)

Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.

Val(st: string; x: числовая переменная; var code: integer)

Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x - может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.

В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками.

Chr(n: byte): char

Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n.

Ord(ch: char): byte;

В данном случае функция возвращает код символа ch.

UpCase(c: char): char;

Если c - строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения.

Лабораторная работа №20.

Операция над файлами. Текстовые файлы.

Задание к работе.

1. Разработать алгоритм решения задачи.

2. Составить блок-схему алгоритма.

3. Составить программу.

4. Отладить программу.

Оглавление - содержание

1. Дан текстовый файл f, содержащий программу на языке паскаль. Проверить эту программу на несоответствие числа открывающих и закрывающих круглых скобок. Считать , что каждый оператор программы

а) занимает не более одной строки файла f ;

б) может занимать произвольное число строк файла f.

2. Дан текстовый файл f. Получить все его строки , содержащие более 60 символов .

3. Дан текстовый файл f . Получить самую длинную строку файла. Если в файле имеется несколько строк с наибольшей длиной , то получить одну из них .

4. Дан текстовый файл f . Записать в перевернутом виде строки файла f в файл g . Порядок строк в файле g должен

а) совпадать с порядком исходных строк в файле f ;

б) быть обратным по отношению к порядку строк исходного файла .

5. Дан текстовый файл f. Переписать компоненты файла f в файл g, вставляя в начало каждой строки по одному пробелу. Порядок компонент должен быть сохранен .

6. Даны текстовый файл f, строка s . Получить все строки файла f, содержащие в качестве фрагмента строку s .

7. Дан текстовый файл f . Исключить пробелы , стоящие в концах его строк . Результат поместить в файл f 1.

8. Даны два текстовых файла f и g. Определить, совпадают ли компоненты файла f с компонентами файла g. Если нет, то получить номер первой строки и позицию первого символа в этой строке, в которых файлы f и g отличаются между собой.

9. Дан текстовый файл. Слова не переносятся с одной строки на другую. Напечатайте строку с наибольшим количеством слов. Если таких строк несколько, напечатайте первые три.

10. Дан текстовый файл . перенесите в новый файл все строки, не содержащие заданного слова.

11. Дан текстовый файл. В новый файл перенесите каждое слово как отдельную строку. Переход к новой строке в исходном файле соответствует пустой строке в новом файле. Пустых строк в заданном файле нет.

12. По файлу, содержащему строки-слова (см.условие предыдущего задания), получите первоначальный файл, в котором слова разделены одним прбелом.

13. Дан текстовый файл. Для каждой строки распечатайте слово наибольшей длины. Если их несколько, то распечатайте все.

14. Дан текстовый файл. Распечатайте строку с заданным номером.

15. Дан текстовый файл. Удалите строку с заданным номером. Если строки с указанным номером нет, сообщите об этом.

16. Дан текстовый файл. Распечатайте все строки, начинающиеся с заданного слова.

17. Дан текстовый файл. Распечатайте все строки, оканчивающиеся заданным словом.

18. Дан текстовый файл. Найдите строку максимальной длины.

20. Дан текстовый файл. Определите, сколько строк файла имеют длину, большую, равную и меньшую, чем заданное значение к.

21. Дан текстовый файл. Создайте два выходных файла: в один перепешите из каждой строки первые р слов (р задается вводом), в другой - оставшиеся. Если в строке меньше чем р слов, то во втором файле соответствующая строка должна быть пучтой.

22. Дан текстовый файл. Распечатайте строки, предшествующие строкам, начинающимся с заданного слова.

23. Дан текстовый файл. Создайте файл целых чисел, в котором каждой строке исходного файла соответствует в выходном файле число, равное количеству слов в строке. Пустой строке или строке, состоящей из одних пробелов, соответствует число 0.

24. Дан текстовый файл. Для каждой строки распечатайте слово с номером (n+1) div 2, где n - количество слов в строке.

25. Дан текстовый файл. Максимальная длина слова в этом файле равна пяти символам. Создайте пять файлов. Каждой строке входного файла соответствует одна строка в каждом из пяти файлов, в которые переписаны через пробел слова соответствующей длины: в первом файле – слова длины 1 (т.е. из одного символа), во втором – слова длины 2 и т.д. Если слов длины к нет, то соответствующая строка должна быть пустой.

Оглавление - содержание

Лабораторная работа №21

Наши рекомендации