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

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

        c[i].Name:=c[i+1].Name;

        c[i].Year:=c[i+1].Year;

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

        c[i+1].Year:=buf.Year;

      end

end;

//------- функция поиска среднего возраста -------------------

function Sred(a:Brigade; n:integer):integer;

var

  i:integer;

  S:integer;

begin

  S:=0;

  for i:=0 to n-1 do

    S:=S+a[i].Year;

  Sred:=S div n;

end;

//------- процедура записи результатов в файл: -------------

procedure WriteFile(a:Brigade; n:integer; b:Worker; c:Brigade; S:integer);

var

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

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

begin

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

  rewrite (f);                                 // направление обмена данными - запись

  writeln(f,'  Ф.И.O.       ГОД РОЖДЕНИЯ');

  writeln(f,'----------------------------');

  for i:=0 to n-1 do

    with a[i] do writeln (f, name:-15, year:9);

  writeln(f,'----------------------------');

  writeln(f,'    САМЫЙ СТАРШИЙ:');

  writeln(f,'----------------------------');

  writeln(f, b.name:-15, b.year:9);

  writeln(f,'----------------------------');

  writeln(f,'Отсортированный список рабочих');

  writeln(f,'----------------------------');

  for i:=0 to n-1 do

    with c[i] do writeln (f, name:-15, year:9);

  writeln(f,'----------------------------');

  writeln(f, 'Средний возраст =',S:5);

  CloseFile(f);

  Finalize(a);            // освобождение динамической памяти массива А

  Finalize(c);            // освобождение динамической памяти массива С

end;

// выполняемые операторы основной  программы

begin

    ReadFile(a,n);               // чтение данных из файла

    Poisk(a,n,b);                 //  вызов процедуры поиска старшего

    Sort(a,n,c);                   //  вызов процедуры сортировки по алфавиту

    S:=Sred(a,n,);               // вызов функции поиска среднего возраста

    WriteFile(a,n,b,c,S);      // вызов процедуры записи в файл

end.

8.  Структуру программы можно видеть в окне Code Explorer (меню View | Code Explorer)

9.  Запустите приложение на выполнение (горячая клавиша F9).

10. Откройте файл с результатами Records.out (команда меню «File | Open»)

 

11. Проанализируйте содержание выходного файла Records.out

12. Сохраните и закройте проект Records.

Варианты заданий

1. Составить массив записей из двух координат на плоскости в декартовой системе и номеров точек. Записать в текстовой файл 50 случайных чисел в диапазоне [-30, 30]. Считать эти числа из файла, интерпретировав как декартовые координаты 25 точек на плоскости и рассортировав в порядке удаления от центра тяжести. Вывести на экран пять наиболее удаленных точек.

2. Составить массив из 10 записей следующей структуры:

·  фамилия, имя, отчество – строки из 20 символов;

·  номер зачетки – строка из восьми символов;

·  количество оценок – байт;

·  оценки – массив байтов.

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

3. Составить массив из пяти записей следующей структуры:

·  фамилия президента;

·  страна;

·  возраст;

·  годовой доход;

·  марка любимого автомобиля.

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

4. Сформировать массив из 10 записей следующей структуры:

·  строка из 50 случайных символов;

·  два вещественных поля X, Y (заполнить случайными числами).

Рассортировать массив в порядке убывания поля X. Для каждой компоненты: если количество латинских символов в строке превышает количество русских символов, удвоить значение поля Y. Вывести исходный и преобразованный массивы.

5. Составить массив из 10 записей следующей структуры:

·  целое   поле   (заполнить   случайными   числами   в   диапазоне

[-15, 15]);

·  целое поле (заполнить случайными числами в диапазоне [0, 5]). 

Интерпретировать поля как целую и дробную части вещественного числа с фиксированной десятичной точкой. Вывести массив в порядке убывания этих “вещественных чисел”, поставив между полями десятичную точку.