Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа № 1-4 ).doc
Скачиваний:
17
Добавлен:
16.03.2015
Размер:
177.15 Кб
Скачать

Лабораторная работа № 4 Строки

Тип STRING (строка) в Турбо Паскале широко используется для обработки текстов. Он во многом похож на одномерный массив символов, описываемый директивой array [1..255] of char, однако, в отличие от последнего, количество символов в строке-переменной может меняться.

Длину строки можно ограничить любой константой порядкового типа (но не более 255), указав это в описании строки:

s:string[35];

Если ограничение не указано, то длина строки принимается максимально возможной, а именно 255 символов.

Нулевой байт строки хранит информацию о ее фактической длине.

Строка в Турбо Паскале трактуется как цепочка символов. К любому символу в строке можно обратиться точно так же, как к элементу одномерного массива array [1..255] of char, например:

var

s : String;

begin

...

if s[5] = ‘A’ then…

end.

Над строками определены следующие функции:

  1. LENGTH (S) – функция типа INTEGER; возвращает длину строки S.

  2. POS (Substr, S) – функция типа INTEGER; отыскивает в строке S первое вхождение подстроки Substr и возвращает номер позиции, с которой она начинается; если подстрока не найдена, возвращается ноль.

  3. CONCAT(S1 [,S2, ... , Sn] ) – функция типа STRING; возвращает строку, представляющую собой сцепление строк-параметров SI, S2, …, Sn.

Аналогичный результат можно получить выполнив S:=S1+S2+…+Sn

  1. COPY(S, Index, Count) – функция типа STRING; копирует из строки S Count символов, начиная с символа с номером Index.

  2. DELETE (S, Index, Count) – процедура; удаляет СОUNT символов из строки S, начиная с символа с номером Index.

  3. INSERT (Substr, S, Index) – процедура; вставляет подстроку Substr в строку S, начиная с символа с номером Index.

  4. STR(X [; Width [: Dec] ], S) – процедура, которая преобразует число X любого вещественного или целого типов в строку символов S так, как это делает процедура WRITELN перед выводом; параметры Width и Dec, если они присутствуют, задают формат преобразования: Width определяет общую ширину поля, выделенного под соответствующее символьное представление вещественного или целого числа X, a Dec – количество символов в дробной части (этот параметр имеет смысл только в том случае, когда Х- вещественное число).

  5. VAL(S, X, Code) – процедура; преобразует строку символов S во внутреннее представление целой или вещественной переменной X, которое определяется типом этой переменной; параметр Code содержит ноль, если преобразование прошло успешно, и тогда в X помещается результат преобразований, в противном случае он содержит номер позиции в строке S, где обнаружен ошибочный символ, и в этом случае содержимое Х не меняется; в строке S недопустимы незначащие пробелы;

  6. UPCASE (Сh) – функция типа CHAR; возвращает для символьного выражения Сh, которое должно представлять собой строчную латинскую букву, соответствующую заглавную букву; если значением СН является любой другой символ (в том числе строчная буква русского алфавита), функция возвращает его без преобразования.

Пример: Удалить из строки все незначащие пробелы

var S : String; Len : Byte;

begin

while Pos(‘ ‘, S)>0 do delete (S, Pos(‘ ‘, S),1);

if S[1] = ‘ ‘ then delete (S, 1,1);

if S[length(S)] = ‘ ‘ then delete (S, length(S),1);

end.

Операции отношения =, <> , >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением СНR(0) .

Следующие операции отношения дадут значение TRUE:

‘Turbo’ <’ Turbo Pascal’

‘Паскаль’ >’Turbo Pascal’

Задания к лабораторной работе № 4:

1. Дан массив А из N строк длиной M. Сформировать массив В, каждый элемент которого равен первому латинскому символу соответствующей строки.

2. Дан массив В из N строк длиной M. Сформировать массив В, каждый элемент которого равен последнему символу соответствующей строки.

3. Определить позицию первого и последнего вхождения в заданную строку А (N) какого-либо символа, введенного пользователем. Если строка не содержит данного символа, выдать сообщение.

4. Проверить, является ли данная строка из 6 символов "счастливой" (сумма первых трех цифр равна сумме трех последних). Выдать сообщение и суммы левой и правой половины.

5. Определить, является ли заданная строка идентификатором.

6. Определить, является ли заданная строка десятичной записью целого числа.

7. Определить, является ли заданная строка шестнадцатеричной записью целого числа.

8. Переписать заданную строку в обратном направлении.

9. Посчитать в строке количество слогов "на" и "при", предлогов "в".

10. Заменить в строке символов все слоги "на" слогом "при".

11. Посчитать в строке символов количество слов, написанных латинскими буквами. Слова в строке разделены пробелами, в конце текста точка.

12. Посчитать в строке символов и выдать на экран количество букв "а", "б", ..., "я".

13. Посчитать количество слов в строке, начинающихся на букву "в". Слова в строке разделены пробелами, в конце текста точка.

14. Посчитать количество слов в строке, заканчивающихся на букву "я". Слова в строке разделены пробелами, в конце текста точка.

15. Посчитать в строке символов и выдать на экран количество букв "а", "b", ..., "z".

16. Дан массив А из N строк длиной M. Сформировать массив В, каждый элемент которого равен символу с максимальным порядковым номером в таблице ASCII соответствующей строки.

17. Дан массив А из N строк длиной M. Сформировать массив В, каждый элемент которого равен символу с минимальным порядковым номером в таблице ASCII соответствующей строки.

18. Определить, является ли заданная строка двоичной записью целого числа.

19. Определить, является ли заданная строка восьмеричной записью целого числа.

20. Посчитать в строке символов и выдать на экран количество цифр "0", "1", ..., "9".

21. Проверить, является ли строка читаемой в прямом и обратном направлении (например, "а роза упала на лапу азора"), (не считая пробелов).

22. Посчитать, сколько и каких букв есть в заданной строке (например, "торт" - буква "т" -2, "о" -1, "р" -3 ).

23. Выдать на экран все символы и их порядковые номера из таблицы символов ASCII, находящиеся между двумя символами, введенными с клавиатуры.

24. Найти в строке символ "*". Разделить заданную строку на две строки (первая - до "*", вторая после "*").

  1. Выдать на экран матрицу, состоящую из символа, введенного с клавиатуры (н-р, 2х3, символ 'М'). Размеры матрицы вводятся пользователем.

  2. Найти в строке символ "!". Заменить все символы до него на "a", после него - на "я ".

  3. Посчитать в строке количество слов. Заменить каждое второе слово на "!!!!!"

  4. Заменить в строке символов все слова на слово, введенное пользователем.

  5. Посчитать в строке символов и выдать на экран количество всех символов (например, "а" - 5, "б" - 6, "f" - 2, "z"- 11, "?"- 3 и т.д.)

  6. Посчитать количество слов в строке, начинающихся на слог "по". Слова в строке разделены пробелами, в конце текста точка.

18