Тип данных запись Тип запись - структура данных, состоящая из фиксированного числа компонент разного типа. Компоненты записи - это поля Тип запись Тип данных Record предоставляет возможность объединить в одну связанную структуру различные по типу и смыслу элементы (поля). Причем элементами записи могут быть и структурированные типы данных, например массивы и другие (подчиненные) записи. Для обработки доступна как вся запись целиком, так и отдельные ее поля. Тип запись Описание типа записи: type <имя типа> = record <имя поля>:<тип поля>; … end; Тип запись Пример описания типа запись. type adress = record town, street: string[15]; home:string[10]; flat:integer; end; var a,b:adress; Тип запись a:=b; Над полями разрешены все операции, допустимые для типа поля. Доступ к полям с помощью составного имени: a.town:=‘Саратов’; a.flat:=14; Тип запись Оператор присоединения with: with <переменная> do <операторы>; Пример: with a do begin town:=‘Саратов’; flat:=14; end; Пример 1. Дан список учащихся, включающий фамилию, имя, пол, возраст. Вывести список ----input.txt---девушек старше 15 лет. Данные в файле input.txt: Все данные - в столбик. Фамилия – до 20 символов, Имя – до 20 символов, Пол – 1 символ, Возраст – число. 4 Иванов Игорь м 16 Вышина Елена ж 12 Косарева Анна ж 17 Петров Валерий м 18 program p1; type pupil=record fam, nam:string[20]; pol:char; age:integer; end; var n,i:integer; spisok:array[1..20] of pupil; begin readln (n); for i:=1 to n do begin readln(spisok[i].fam); readln(spisok[i].nam); readln(spisok[i].pol); readln(spisok[i].age); if (spisok[i].pol=‘ж’) and (spisok[i].age>15) then writeln(spisok[i].fam,’ ‘, spisok[i].nam,’ ‘,spisok[i].age); end; end. program p1; type pupil=record fam, nam:string[20]; pol:char; age:integer; end; var i,n:integer; spisok:array[1..20] of pupil; begin readln (n); for i:=1 to n do with spisok[i] do begin readln(fam); readln(nam); readln(pol); readln(age); if (pol=‘ж’) and (age>15) then writeln(fam,’ ‘, nam,’ ‘,age); end; end. Данные – в строку В первом случае мы считываем фамилию и имя по одному символу. Пол состоит из одного символа, после пробела находится число, оператор readln считыват пол, возраст и переходит на новую строку. Понадобится новая переменная c типа char – текущий символ при считывании; Во втором случае считываем всю строку, потом разрезаем ее на части. Новая переменная s типа string нужна для считывания строки, переменные p (позиция первого пробела) и code – типа integer. Пример № 1 ввода данных. Считываем информацию посимвольно. readln (n); for i:=1 to n do begin spisok[i].fam:=''; read(c); while c<>' ' do begin spisok[i].fam:=spisok[i].fam+c; read(c); end; spisok[i].nam:=''; read(c); while c<>' ' do begin spisok[i].nam:=spisok[i].nam+c; read(c); end; readln(spisok[i].pol,spisok[i].age); end; ----input.txt---4 Иванов Игорь м 16 Вышина Елена ж 12 Косарева Анна ж 17 Петров Валерий м 18 Пример № 2 ввода данных. Считываем всю строку и делим ее на части. readln (n); for i:=1 to n do begin readln(s); p:=pos(' ',s); spisok[i].fam:=copy(s,1,p-1); delete(s,1,p); p:=pos(' ',s); spisok[i].nam:=copy(s,1,p-1); delete(s,1,p); spisok[i].pol:=s[1]; delete(s,1,2); val(s,spisok[i].age,code); end; ----input.txt---4 Иванов Игорь м 16 Вышина Елена ж 12 Косарева Анна ж 17 Петров Валерий м 18