Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Лекции по Паскалю2 / Иллюстрации к Лекции 9 по информатике.doc
Скачиваний:
28
Добавлен:
02.05.2014
Размер:
1.05 Mб
Скачать

9.4. Примеры использования данных типа «запись»

1. Программа для добавления записей в файл данных о дневной температуре воздуха

Program aprec;

uses CRT;

var

DayTemp:record { дневная температура }

day:integer; { число }

month:integer; { месяц }

temper:integer; { температура }

end;

f:text; { файл с записями о дневной температуре }

begin

clrscr;

assign(f,'a:\temper.txt');

append(f); { открываем файл для добавления записи }

write('Введите в одной строке, разделяя пробелами');

writeln(' число, номер месяца и температуру');

write('->');

with DayTemp do

begin

readln(day,month,temper);

writeln(f,day,' ',month,' ',temper);

end;

close(f);

writeln('Данные добавлены');

readln;

end.

Результат работы программы

Содержание файла a:\temper.txt после выполнения программы

12 3 45

14 10 -3

2. Программа для обработки массива данных по группе студентов из 30 человек

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

Используемые в программе идентификаторы

Обозначения

Тип данных

Примечание

STR

RECORD

Запись сведений о студенте

FAM

STRING [30]

Поле записи STR – фамилия

B1,B2,B3,B4,B5

INTEGER

Поля записи STR – оценки

SB

REAL

Средний балл

Y

RECORD

Промежуточная запись

TBL

ARRAY [1…30] OF STR

Массив, содержащий записи сведений о студентах группы

J

INTEGER

I

INTEGER

K

INTEGER

M

INTEGER

X

REAL

PR

INTEGER

Переменная для управления повторной работой программы

Текст программы

PROGRAM PRIM2;

USES CRT;

TYPE

STR=RECORD

FAM: STRING [30];

B1,B2,B3,B4,B5: 2..5;

SB: REAL

END;

VAR

TBL: ARRAY [1..30] OF STR;

Y:STR;

I,J,K,M:INTEGER;

X,R:REAL;

PR:BYTE;

BEGIN

CLRSCR;

REPEAT

WRITELN ('Введите число студентов');

READLN (M);

FOR I:= 1 TO M DO

WITH TBL[I] DO

BEGIN

WRITELN('Введите фамилию');

READLN (FAM);

WRITELN('Введите пять оценок студента');

READLN (B1,B2,B3,B4,B5);

END;

FOR I:= 1 TO M DO

WITH TBL[I] DO

SB:= (B1+B2+B3+B4+B5)/5;

FOR I:= 1 TO M DO

BEGIN

K:=1;

X:=TBL[I].SB;

FOR J:=I TO M DO

IF TBL[J].SB >=X THEN

BEGIN

K:=J;

X:=TBL[J].SB;

Y:=TBL[K];

TBL[K]:=TBL[I];

TBL[I]:=Y

END;

END;

WRITELN ('Список студентов');

FOR I:=1 TO M DO

WITH TBL[I] DO

WRITELN (FAM, SB:4:2);

WRITELN ('Обработать еще один список? 1-да 0-нет');

READLN(PR);

UNTIL PR=0

END.