ОПИСАНИЕ ЗАПИСИ

advertisement
Записи
Задача 1. Составить программу для
хранения в памяти ЭВМ данных из
следующей таблицы:
Фамилия
Иванов
Петров
Сидоров
Козлов
Лейкин
Математика
4
5
3
5
4
Русский Физика Химия История
5
3
4
5
4
3
4
3
4
3
4
3
3
4
4
Средний
балл
3
5
4
3
3
Отсортировать информацию по убыванию
значения среднего балла учащегося .
Что такое запись?
• ЗАПИСЬ – упорядоченное (изначально по
порядковым номерам) множество
значений, называемых полями записи,
которые могут иметь разные типы.
• ЗАПИСЬ – структура данных, построенная
из компонент, имеющих в общем случае
разные типы данных.
Задача. Составить программу для хранения
в памяти ЭВМ данных из следующей
таблицы:
Фамилия
Математика
fam:string[15] mat:byte
Иванов
Петров
Сидоров
Козлов
Лейкин
4
5
3
5
4
Русский
rus:byte
5
3
4
5
4
Физика Химия История
fiz:byte him:byte his:byte
3
4
3
4
3
4
3
3
4
4
3
5
4
3
3
Средний
балл
sb:real
3.8
4
3.4
4.2
3.6
Отсортировать информацию по значению
среднего балла учащегося.
ОПИСАНИЕ ЗАПИСИ:
VAR NameRec: RECORD
поле_1: тип;
поле_2: тип;
……..
поле_N:тип;
END;
ОПИСАНИЕ ЗАПИСИ:
TYPE NAME=RECORD
поле_1: тип;
поле_2: тип;
……..
поле_N:тип;
END;
VAR NameRec: NAME;
Как получить доступ к полям
записи?
Способ первый.
Использовать формат ИМЯ_ЗАПИСИ.ИМЯ_ПОЛЯ
ПРИМЕР:
tbl.sb:=(tbl.mat+tbl.ist+tbl.him+tbl.fiz+tbl.rus)/5
Как получить доступ к полям
записи?
Способ второй.
Использовать оператор WITH имя_записи DO
ПРИМЕР:
with tbl do
sb:=(mat+ist+him+fiz+rus)/5;
{1. Объявление переменных}
uses crt;
type grup=record
fam:string[15];
mat,rus,fiz,him,ist:byte;
sb:real;
end;
const n=5;
var tbl: array[1..n] of grup;
i,j :integer; y:grup;
{2. Заполнение массива из записей}
begin
clrscr;
for i:=1 to n do
with tbl[i] do
begin
write('fam ');readln(fam);
write('mat ');readln(mat);
write('fiz ');readln(fiz);
write('rus ');readln(rus);
write('him ');readln(him);
write('ist ');readln(ist);
clrscr;
end;
2. Заполнение массива из записей.
Вычисление среднего по каждой строке
for i:=1 to n do
with tbl[i] do
sb:=(rus+mat+fiz+him+ist)/5;
3. Вывод таблицы на экран
writeln('fam':15,'mat':4,'fiz':4,'rus':4,'him':4,'ist':4,'sr':5);
for i:=1 to n do
with tbl[i] do
writeln(fam:15,mat:4,fiz:4,rus:4,him:4,ist:4,sb:5:2);
4. Обработка таблицы
for i:=1 to n-1 do
for j:=i+1 to n do
if tbl[i].sb<tbl[j].sb then begin
y:=tbl[i];
tbl[i]:=tbl[j];
tbl[j]:=y;
end;
5. Вывод отсортированной таблицы
writeln;
for i:=1 to n do
with tbl[i] do
writeln(fam:15,mat:4,fiz:4,rus:4,him:4,ist:4,sb:5:2);
readln;
end.
Задача 2
Известны данные об учениках класса: фамилия, имя,
отчество, адрес и домашний телефон (если есть).
Вывести на экран строки с фамилиями, именами и
адресами тех учеников, у которых нет домашнего
телефона.
Домашнее задание:
Данные о продаже молочных продуктов в течении
дня приведены в следующей таблице.
Продукт
Цена
Поставлено
Продано
Молоко
20
120
50
Сметана
25
250
200
Йогурт
14
100
85
Творог
30
130
100
Сливки
35
55
45
Выручка
Составить программу, которая выводит на экран вид
продукта, который дал максимальную выручку.
Download