Записи. Ознакомление с правилами оформления записи в программе (Лабораторная работа № 9), страница 2

Элемент языка

Назначение

Type mas:array of real;

Объявление типа – динамического массива вещественных чисел

Var A:mas;

Объявление динамического массива А

SetLength(A,N);

Выделение динамической памяти массиву A, состоящему из N действительных чисел

Finalize(A);

Освобождение динамической памяти

Randomize;

Процедура инициализации генератора случайных чисел

RandomRange(a,b)

Функция возвращает целое случайное число в диапазоне [a,b] (Math)

Random [ ( Range: Integer) ];

Функция генерации случайного числа в диапазоне
0<=X<Range. Если параметр отсутствует, генерируется случайное число в диапазоне
0<= X<1

Ord('c')

Функция возвращает порядковый номер символа 'c'

Odd(X: Longint): Boolean;

Функция возвращает true, если X – нечетное целое число, иначе – false

Типовой вариант

Определить самого старшего рабочего бригады из N=5  человек, средний возраст рабочих и отсортировать список по алфавиту, если сведения о рабочих включают:

-  фамилию;

-  год рождения.

Порядок выполнения работы

1.  Создайте новый проект консольного приложения Delphi и сохраните его файлы на рабочий диск в папку Ivanov-9 под именем Records.

2.  Вставьте новый текстовый файл в проект (команда меню «File / New / Other…»). Выберите на вкладке «New» тип  вставляемого объекта «Text».

3.  В результате текстовый файл File1.txt будет вставлен в проект и открыт в окне редактора.

4.  Сохраните файл под именем Records.txt (команда меню «File | Save As…»)

5.  Внесите в новый файл Records.txt данные задания (если конкретные значения полей не заданы, то необходимо задать их самостоятельно):

6.  Сохраните изменения файла (команда меню «File | Save»).

7.  Отредактируйте текст главной программы.

program Records;

{$APPTYPE CONSOLE}

uses

  SysUtils;

type

  Worker=record                          // тип-запись

      Name :string[15];        // поле-имя

      Year :integer               // поле-год рождения

  end;

  Brigade=array of Worker; // тип - динамический массив рабочих

var

  a:Brigade;                       // массив рабочих

  c:Brigade;                       // отсортированный массив

  b:Worker;                       // самый старший

  n:integer;                        // количество всех рабочих

  S: integer;                                 // средний возраст бригады

//------- процедура  чтения файла: ----------------------------

procedure ReadFile(var a:Brigade; var n:integer);

var

  f:text;                              // файловая переменная

  i:integer;                                   // счетчик

begin

  AssignFile(f,'Records.txt'); // связывание файловой переменной

  Reset(f);                         // направление обмена данными-чтение

  ReadLn(f,n);                   // чтение количества элементов массива

  SetLength(a,n);               // выделение динамической памяти под массив

  for i:=0 to n-1 do

    with a[i] do ReadLn(f,name,year);      // чтение данных массива

  CloseFile(f);                                        // закрытие файла исходных данных

end;

//------- процедура поиска самого старшего -------------------

procedure Poisk(a:Brigade; n:integer; var b:Worker);

var

  i:integer;

begin         

  b:=a[0];       // b – эталонная запись

// проход по остальным записям массива

  for i:=0 to n-1 do

    if a[i].year < b.year then b:=a[i];                   // проверка на старшинство

end;

//------- процедура сортировки списка по алфавиту -------------------

procedure Sort(a:Brigade; n:integer; var c:Brigade);

var

  i,j:integer;   // счетчики

  buf:Worker; // буферная запись

begin

  c:=Copy(a);         // копирование динамического массива А в С

  // сортировка методом "пузырька"

  for j:=0 to n-2 do

    for i:=0 to n-2 do

      if c[i].Name[1] > c[i+1].Name[1] then

      begin

        // обмен полями c[i] и c[i+1] записей через запись buf

        buf.Name:=c[i].Name;