- •Обработка текстовых данных. Решение задач с использованием записей.
- •Var p: array[1..50] of char;
- •Var Str: array[1..60,1..80] of char;
- •Var t: string[50];
- •Var Pred: string;
- •Var st: abitur;
- •Var mst: array[1..N] of abitur;
- •Inform: string[4];
- •Var mts: array[1..N] of abitur;
- •Var st: abitur;
- •Ved: array[1..10]of stud;
- •I,k:byte;
- •Var Hel: array [1..N] of izb;
- •I,j: integer;
Обработка текстовых данных. Решение задач с использованием записей.
Начиная с версии 7.0, в языке ТР существует три типа текстовых данных: символьные - Char, строчные - String и, так называемые asciiz-строки.
Символьная константа – это один символ в кавычках, например, 'A', '5', '?' и т.д. Она занимает 1 байт памяти.
Символьная переменная описывается словом Char.
Так оператор Var S, T, Sim: char; обозначает, что в программе будут использованы три символьные переменные S, T, Sim. Для каждой из них будет выделен 1 байт памяти, куда нужно записать соответствующее значение. Это можно сделать разными способами, например, в операторе присвоения: S:='*'; . Оператор Read(S) обеспечит ввод символа с клавиатуры.
Символьные данные можно объединять в массив, например:
Var p: array[1..50] of char;
Функция Р – это строка из 50 символов. Ее можно ввести в цикле.
For i:=1 to 50 do read(P[i]); readln;
Существует возможность работы с элементами массива Char, как с элементами обычных массивов. Например:
P[i]:=’ ’;
If P[i]=’*’ then writeln(P[i]);
Страничку текста можно представить двумерным массивом.
Var Str: array[1..60,1..80] of char;
Однако существует ограниченный класс задач, при решении которых удобно использовать данные Char.
Наиболее удобны для работы с текстами данные String. Переменная такого типа может иметь длину 255 байтов.
Строчная константа описывается служебным словом String, после которого может стоять в квадратных скобках число – длина строки. Например:
Var t: string[50];
S,Q: string;
В этом случае для переменной Т будет выделен 51 байт памяти, а для переменных S и Q – по 256 байтов. В эту память можно записать конкретную последовательность символов, длина последовательности может быть меньше, чем выделено. Так, после выполнения оператора
Т:='алгоритм сортировки';
В выделенной памяти будет размещено 20 символов, так что в T[1] будет символ ‘a’, а в T[2] – ‘л’ и т.д.
Строку можно ввести с клавиатуры при помощи оператора Readln, например:
Readln (Т); .
Для ввода каждой строки используется отдельный Readln, это дает возможность вводить строку любой длины.
Две переменные нельзя вводить одним оператором Readln.
Readln (S,Q); - неверно.
Правильно Readln (S); Readln(Q);
При вводе текста сначала после первой фразы, а потом после второй нажать Enter.
В библиотеке языка есть несколько важных подпрограмм для выполнения различных операций со строками String.
Функция Pos(подстрока, строка) определяет первую слева позицию, начиная с которой подстрока входит в строку. Функция Pos(S1,S2) ищет в S2(с левого края) подстроку S1. Если S1 в S2 нет, результат равен нулю.
Функция Copy(строкаS1, NPoz, Kоlsim) выделяет из строки S1 подстроку, начиная с позиции NPoz длиной Kоlsim символов.
Функция Length(строка) определяет количество символов в строке.
Процедура Insert(подстрока, строка, NPoz) выполняет операцию вставки подстроки в строку, начиная с позиции NPoz.
Процедура Delete(строка, NPoz, Kоlsim) удаляет из строки подстроку с позиции NPoz, длиной Kоlsim.
Пример.
Слова в предложении отделены символом пробел. Определить количество слов, которые начинаются и заканчиваются одинаковыми символами.
Uses crt; {ищем слова с одинаковыми первыми и последними символами}