Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MET1.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.14 Mб
Скачать

7. Записи

Запись – конечная совокупность элементов различного типа. Компоненты записи называются полями.

Описание типа запись имеет следующий вид:

Record <список идентификаторов полей с указанием их типов> end .

Описание полей в списке аналогично описанию переменных в программе. Допускается вложенность записей, т.е. поля записи сами могут быть записями.

Между однотипными записями в целом разрешена только одна операция присваивания. С полями записи допустимы все операции, которые возможны для данного типа поля. Для доступа к полям используется частичная переменная: <имя записи>.<имя поля>. Без имени записи обращаться к ее полям не разрешается.

Для работы с записями удобно применять оператор присоединения:

With <список переменных типа запись> Do <оператор, содержащий имена полей> .

Пример 12. Найти сумму и произведение двух комплексных чисел.

Program Example_12;

Type Complex = Record

Re, Im: Real

End;

Var C1, C2, Sum, Pr : Complex;

{***процедура ввода комплексного числа***}

Procedure Input_Complex ( Number : Byte; Var C: Complex);

Begin

Writeln (‘Введи ’, Number, ' число:’);

Write (‘Введи действительную часть:’); Readln (C.Re);

Write (‘Введи мнимую часть:’); Readln (C.Im);

End;

{***процедура печати комплексного числа***}

Procedure Print_Complex ( S : String; C: Complex);

Begin

Writeln (S, ‘=’, C.Re ,’ + i *’, C.Im)

End;

{***процедура нахождения суммы и произведения комплексных чисел***}

Procedure Calc (C1, C2 : Complex; Var Sum, Pr : Complex);

Begin

Sum.Re:=C1.Re + C2.Re; Sum.Im:=C1.Im + C2.Im;

Pr.Re:=C1.Re*C2.Re – C1.Im*C2.Im;

Pr.Im:=C1.Re*C2.Im + C1.Im*C2.Re

End;

{***начало программы***}

Begin

Input (1, C1); Input (2, C2);

Calc (C1, C2, Sum, Pr);

Print (‘Число C1’, C1); Print (‘Число C2’, C2);

Print (‘C1+C2’, Sum); Print (‘C1*C2’, Pr)

End.

Пример 13. Даны сведения о сдаче сессии студентами группы: фамилия и инициалы, оценки по четырем экзаменам. Составить список студентов – отличников и хорошистов, а также подсчитать их количество.

Program Example_13;

Const N=20;

Type

Student = Record

FIO : String [20];

Balls : Array [1..4] of 2..5

End;

Group = Array [1..N] of Student;

Var G : Group; i, j, K, Kol, Sum: Byte;

Begin

Writeln (‘Введите сведения о группе:’);

For i:=1 to N do

Begin

Writeln (‘Введи данные о ’,i,’ студенте:’);

With G[i] do

Begin

Write (‘Фамилия и инициалы:’); Readln (FIO);

Write (‘Оценки по четырем предметам (через пробел):’);

For j:=1 to 4 do Read (Balls[j])

End

End;

Kol:=0;

Writeln (‘Отличники и хорошисты’);

For i:=1 to N do

Begin

K:=0; S:=0;

With G[i] do

For j:=1 to 4 do

If Balls[j]>3 Then Begin Inc(K); S:=S + Balls[j] End;

If K=4 Then

Begin

Inc(Kol); Write(Kol,‘.’, FIO);

If S=20 Then Write (‘-отличник’);

Writeln

End

End;

Writeln (‘Всего ’,Kol, ‘ человек’)

End.

Задания для самостоятельной работы

ЗАДАНИЕ 1. Составить программы для решения следующих задач:

Варианты задания 1.

  1. Type dec=record x,y:real end;

pol=record r,fi:real end;

{r 0, - fi }

Описать процедуру DP(d,p), преобразующую координаты точки на плоскости из декартовых d в полярные p.

  1. Type dec=record x,y:real end;

pol=record r,fi:real end;

{r 0, - fi }

Описать процедуру РD(р,d), преобразующую координаты точки на плоскости из полярных р в декартовые d.

  1. Type time=record ch : 0..23; min, sec : 0..59 end;

Описать логическую функцию RAN(t1,t2) для проверки, предшествует ли время t1 времени t2 (в рамках суток).

  1. Type time=record ch : 0..23; min, sec : 0..59 end;

Описать процедуру NEXT(t,t1), присваивающую параметру t1 время, на секунду большее времени t (учесть время суток).

  1. Type time=record ch : 0..23; min, sec : 0..59 end;

Описать процедуру INTERVAL(d,t2,t1), которая вычисляет время d, прошедшее от времени t1 до времени t2: d=t2-t1 (считать, что t2 t1).

  1. Type pole=record vert : ‘a’..‘h’; gor : 1..8 end;

Описать логическую функцию HOD_FERZ(n1,n2), проверяющую, может ли ферзь за один ход перейти с поля n1 шахматной доски на поле n2.

  1. Type name=(alex, ann, jon, lena, peter, tom, fil, vica);

persona=record pol : (m,g); rost: 140..200 end;

gruppa=array[name] of persona;

Описать логическую функцию ODIN_ROST(gr), проверяющую, есть ли в группе gr хотя бы два человека одного роста.

  1. Type name=(alex, ann, jon, lena, peter, tom, fil, vica);

persona=record pol : (m,g); rost: 140..200 end;

gruppa=array[name] of persona;

Описать функцию HIGH(gr), определяющую имя самого высокого мужчины из группы gr.

  1. Const N=30;

Type persona=record pol : (m,g); rost: 140..200 end;

gruppa=array[1..N] of persona;

Описать функцию SR_ROST(gr), которая определяет средний рост женщин из группы gr.

  1. Const N=30;

Type vershina=record name : string[15]; vysota: 4000..8000 end;

spisok=array[1..N] of vershina;

Описать процедуру HIGHEST(sp), печатающую название самой высокой вершины из списка sp.

  1. Const N=28;

Type kost=record lev, pr : 0..6 end;

ryad=array[1..N] of kost;

Описать логическую функцию PRAV_RYAD(r), которая проверяет, правильно ли расставлены кости домино в ряду r (равна ли правая цифра очередной кости левой цифре следующей кости).

  1. Const N=20;

Type rac=record chisl : integer; znam : 1..32767 end;

mas=array[1..N] of rac;

Описать процедуру MAX(ms, m), присваивающую параметру m наибольшее из рациональных чисел массива ms.

  1. Type data=record month : 1..12; god : 1900..2000 end;

Описать функцию LAST_CHISLO(day), вычисляющую количество дней в том месяце, которому принадлежит дата day.

  1. Type data=record chislo : 1..31; month : 1..12; god : 1900..2000 end;

Описать логическую функцию VERN_DATA(day), проверяющую правильность даты day (например, чтобы не было 31 июня).

  1. Type rac=record chisl : integer; znam : 1..32767 end;

Описать процедуру SOKR(r), приводящую рациональное число r к несократимому виду.

ЗАДАНИЕ 2. Составить программы для решения следующих задач:

Варианты задания 2.

1. Даны сведения о багаже пассажиров: фамилия пассажира, количество вещей и вес в килограммах.

а) Выдать на экран сведения о пассажирах с наибольшим количеством вещей.

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

2. Даны сведения о багаже пассажиров: фамилия пассажира, количество вещей и вес в килограммах.

а) Найти всех пассажиров, у которых средний вес одной вещи отличается не более, чем на 0,5 кг от общего среднего веса одной вещи.

б) Упорядочить все сведения о пассажирах, вес багажа которых более 30 кг, в порядке возрастания количеств вещей в багаже.

3. Даны сведения о книгах в библиотеке: фамилия автора, название книги и год издания.

а) Напечатать год издания и названия книг данного автора, год издания которых оканчивается на цифру “7”.

б) Упорядочить все сведения о книгах, изданных до 1930 года, в алфавитном порядке фамилий авторов.

4. Даны сведения о книгах в библиотеке: фамилия автора, название книги и год издания.

а) Выдать на экран сведения о книгах, в названии которых более двух слов.

б) Упорядочить все сведения о книгах с заданной фамилией автора в порядке возрастания годов изданий его книг.

5. Даны сведения о книгах в библиотеке: фамилия автора, название книги и год издания.

а) Найти самую старую книгу в библиотеке и выдать все сведения о ней. Если таких книг несколько, то сообщить обо всех.

б) Упорядочить все сведения о книгах, изданных в 1998 году, в алфавитном порядке названий.

6. Даны сведения о сотрудниках учреждения: фамилия, инициалы, номер телефона (если телефона нет, то 0).

а) Выдать на экран сведения о сотрудниках, номер телефона которых заканчивается на “10”, и подсчитать их количество.

б) Упорядочить все сведения о сотрудниках в алфавитном порядке фамилий.

7. Даны сведения о сотрудниках учреждения: фамилия, инициалы, номер телефона (если телефона нет, то 0).

а) Напечатать данные о сотрудниках, фамилия которых содержит две буквы “о”.

б) Упорядочить сведения о сотрудниках, фамилия которых начинается с заданной буквы, в порядке возрастания номеров телефонов.

8. Даны сведения об экспортируемых товарах: наименование товара, страна, импортирующая товар, и объем поставляемой партии в штуках.

а) Определить товары, которые экспортируются более чем из одной страны, и выдать все сведения о таких товарах.

б) Упорядочить все сведения о товаре с заданным наименованием в алфавитном порядке стран-экспортеров.

9. Даны сведения об импортируемых товарах: наименование товара, страна-изготовитель и объем поставляемой партии в штуках.

а) Составить список стран, которые импортируют данный товар, и подсчитать общий объем его импорта.

б) Упорядочить все сведения о товарах, объем импорта которых более 1000 штук, в алфавитном порядке наименования товаров.

10. Даны сведения об импортируемых товарах: наименование товара, страна-изготовитель и объем поставляемой партии в штуках.

а) Выдать на экран список стран, которые импортируют наиболее распространенный товар.

б) Упорядочить все сведения о товарах из страны с заданным названием в алфавитном порядке наименования товаров.

11. Даны сведения о результатах соревнования по бегу на 100 метров: фамилия и имя спортсмена, спортивное общество, результат в секундах.

а) Выдать все сведения о спортсмене по фамилии “Петров”. Если таких несколько, то выдать данные о спортсмене, показавшем лучший результат.

б) Упорядочить все сведения о спортсменах общества с заданным названием в алфавитном порядке фамилий.

12. Даны сведения об игрушках: название игрушки, стоимость и возрастные границы (например, от 4 до 6 лет).

а) Можно ли подобрать любую игрушку, кроме мяча, подходящую ребенку трех лет, и дополнительно мяч так, чтобы суммарная стоимость игрушек не превосходила 50 рублей.

б) Упорядочить все сведения о куклах по возрастанию их стоимости.

13. Даны сведения о владельцах автомобилей: фамилия, инициалы владельца, марка машины, номер, цвет.

а) Выдать все сведения о владельцах красных “Жигулей”, номер машин которых содержит “1”.

б) Упорядочить все сведения о владельцах, фамилия которых начинаются с заданной буквы, по возрастанию номеров машин.

14. Даны сведения о владельцах автомобилей: фамилия, инициалы владельца, марка машины, номер, цвет.

а) Выдать все сведения о владельцах самой распространенной марки автомобиля.

б) Упорядочить все сведения о владельцах белых машин в алфавитном порядке марки машин.

15. Даны сведения о владельцах автомобилей: фамилия, инициалы владельца, марка машины, номер, цвет.

а) Напечатать все сведения о машинах, сумма цифр номера которых равна 10, а также подсчитать их количество.

б) Упорядочить все сведения о владельцах “Волги” в алфавитном порядке фамилий владельцев.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]