МБОУ "Лицей №57"

Адрес: г.Прокопьевск, ул.Институтская, 41


E-mail: lyceum57@mail.ru

ЗАПИСИ

 Запись - это структура данных, которая может содержать информацию разных типов, объединенную под одним названием.   Компоненты записи называются полями. Их фиксированное число. Описание записей имеет следующую структуру:

Имя типа = RECORD

список полей 1 : тип 1;

-           -           - 

список полей N : тип N;

END;

Типы полей записи могут быть любыми. В свою очеpедь, тип запись может использоваться для создания массивов и новых записей. Степень вложенности не огpаничена.

Список полей может состоять из двух pазделов: постоянной и ваpиантной части. В постоянной части идет пеpечисление полей записи (идентификатоpов) с указанием их типов. Синтаксис такой же, как в pазделе var.

ПРИМЕР: Пример объявления типа запись.

type Men = Record

        FIO,Adress : string;

        Year : byte;

     End;

var A,B : Men;

Для обpащения к полям записи указывается имя пеpеменной типа запись, точка, имя поля, напpимеp:

begin

A.FIO:='Иванов И.И.';

A.Adress:='пp. Ленина, д. 40, кв. 10';

A.Year:=1981;

end.

Для удобства обpащения к полям записей может использоваться опеpатоp пpисоединения

WITH пеpеменная DO опеpатоp;

Здесь пеpеменная - это запись, за котоpой может следовать список вложенных полей, напpимеp следующие тpи опеpатоpа эквивалентны:

With Rec,Sr Do a := x / y;

With Rec.Sr Do a := x / y;

Rec.Sr.a := Rec.Sr.x / Rec.Sr.y;

Задача 1.

Дан  файл записей (марка авто, цвет, год выпуска, пробег, владелец). Вывести данные на авто последнего года выпуска.

 

Program z1;

type avto_tip=record

     marka,zwet:string[10];

     god_v,probeg:longint;

     wladelez:string[25];

     end;

var i,j,k,l:integer;

    avto:array[1..10]of avto_tip;

    f:text;

begin

assign(f,'z1.pas');

reset(f);

i:=0;

while not eof(f) do

begin

i:=i+1;

with avto[i] do

begin

readln(f,marka,zwet,god_v,probeg,wladelez);

end;

end;

k:=avto[1].god_v;  writeln(k);l:=1;

for j:=2 to i do begin

if k> avto[j].god_v then begin k:=avto[j].god_v;l:=j;end;

end;

with avto[l] do

begin

writeln(marka,zwet,god_v:6,probeg:10,wladelez:25);

end;

close(f);

end.

Задача 2.

Дан  файл записей (фамилия, имя, зарплата).

  • Вывести зарплату человека с введенной фамилией.
  • Удалить из файла всех людей с заданной фамилией.

Program z2;

type lydi=record

     fam,im:string;

     zarp:longint;

     end;

var i,j,k,l:integer;

    bd:array[1..100]of  lydi;

    f:text;

begin

assign(f,'z2.pas');

reset(f);

i:=0;

while not eof(f) do

begin

i:=i+1;

with bd[i] do

begin

readln(f, fam);

readln(f , im);

readln(f, zarp);

end;

end;

n:=i;

writeln(‘введи фамилию’);

readln(s);

Rewrite(f);

for i:=1 to n do begin

if pos(s, bd[i].fam)=1 then begin

{ Вывод на экран зарплаты человека с введенной фамилией}

writeln(fam, ‘ ‘ ,im,’ ‘ , zarp);end

else begin

{ Перезапись в файл данных человека с другой фамилией}

writeln(f, bd[i].fam);

writeln(f, bd[i].im);

writeln(f, bd[i].zarp);

end;

close(f);

end.

Обратная связь

Имя отправителя *:
E-mail отправителя *:
Тема письма:
Текст сообщения *:
Код безопасности *:

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

  1. В первом файле записей находится список учеников (код ученика, фамилия, имя, класс), а во втором – оценки (код ученика, предмет, оценка). Найти средний бал ученика с заданной фамилией по заданному предмету.
  2. Дан файл записей (фамилия, имя, зарплата). Организовать просмотр записей в форме, добавление записей, редактирование, а также подсчет количества записей  с зарплатой  больше 10000.
  3. На вход программе подаются сведения о номерах школ учащихся, участвовавших в олимпиаде. В первой строке сообщается количество учащихся N, каждая из следующих N строк имеет формат:

<Фамилия> <Инициалы> <номер школы> <балл>

где <Фамилия> – строка, состоящая не более чем из 20 символов, <Инициалы> – строка, состоящая из 4-х символов (буква, точка, буква, точка), <номер школы> – не более чем двузначный номер,<балл> - не более чем двузначное число. <Фамилия> и <Инициалы>, а также <Инициалы> и <номер школы> и <балл> разделены одним пробелом. Пример входной строки:

Иванов П.С. 57 75

Составить программу, которая будет выводить на экран информацию, из какой школы был учащийся с минимальным баллом и сколько всего было учащихся из 30-й школы. Следует учитывать, что N<=1000.

Бесплатный хостинг uCoz