Структурированные типы данных
При решении задач обработки большого количества данных используют массивы. Но при работе с массивами основное ограничение заключается в том, что все элементы массива должны быть одного типа. Для работы с комбинированными типами данных применяют записи.
Записи
Записи – это структурированный тип данных, позволяющих хранить вместе различные типы данных.
Запись состоит из нескольких полей, для каждого из которых при объявлении (описании) указывается имя и тип.
Например:
type
student = record; {запись}
surname : string[20];
year : integer;
bal : real;
end; {завершает список полей}
var
st:student;
Сформирован пользовательский тип данных – student, он базируется на стандартных типах (string, integer,real).
Переменная st - имеет тип student (запись), состоит из 3-х полей:
surname – фамилия студента;
year – год рождения;
bal – средний бал.
Каждое поле хранит информацию разного типа. При обращении к отдельным полям указывается имя всей записи и имя отдельного поля через точку.
st.surname:='Иванов';
st.year:=1905;
st.bal:=4.5;
Для уменьшения записи обращения к отдельным полям используют оператор with … do
Например:
with st do
begin
surname:='Иванов';
year:= 1905;
bal:=4.5;
end;
Для обработки большого объема информации комбинированного типа целесообразно строить массивы записей, где каждый элемент массива – запись, состоящая из нескольких полей разного типа.
Например, чтобы сохранить информацию о студентах группы в 25 человек, можно создать следующий массив записей:
type
student = record; {запись}
surname : string[20];
year : integer;
bal : real;
end;
var
st:array[ 1..25 ] of student;
st – массив записей. Каждый элемент массива(St[i])содержит информацию об одном студенте:
St[i].surname – фамилия;
St[i].year - год рождения;
St[i].bal - средний бал.
Задача.
Создать массив записей, содержащий информацию о студентах группы. Каждая запись содержит поля – фамилия, год рождения, пол. Подсчитать средний возраст студентов мужского пола группы.
Таблица идентификаторов
№ | Наименование переменной | Обозначения в программе |
Имя массива | st | |
Количество студентов | n | |
Индекс массива | i | |
Средний возраст | p | |
Количество мужчин | k | |
Текущий год | t |
program rec;
uses crt;
type
student = record; {запись}
surname : string[20];
year : integer;
pol : char;
end;
var
st:array[ 1..30 ] of student;
i,n,t:integer; p:real;
begin
clrscr;
writeln(‘Введите текущий год’);
readln(t)
writeln(‘Введите количество студентов’);
readln(n)
for i:=1 to n do
with st[i] do
begin
writeln(‘Сведения о ’,i,‘ студенте’);
writeln(‘Введите фамилию’); readln(surname);
writeln(‘Введите год рождения’); readln(year);
writeln(‘Введите средний бал’); readln(bal);
end;
p:=0;
for i:=1 to n do
begin
if st[i].pol=’m’ then
begin
p:=p+(t-st[i].year);
k:=k+1;
end;
writeln(‘Средний возраст мужчин =’,(p/k):8:3 );
readln;
end.
Дата добавления: 2015-05-21; просмотров: 547;