Указатели, динамически формируемые массивы и строки, страница 3

      pPoint=^Point;

      pInt=^Integer;

   Var

      pi1,pi2,pi3:pint;

      pr1, pr2,pr3 : ^real;

      pnt1:ppoint;

      pnts:array[1..3]of ppoint;

      i:integer;

      x,y:real;

Begin

   New (pi1);

   New (pi2);

   New (pr1);

   New (pnt1);

   x:=1.0;

   y:=2.0;

   pi1^:=1;

   pi2^:=-1;

   pi3:=pi2;

   pi3^:=pi1^-pi2^;

   pi1:=pi2;

   pi1^:=pi1^-pi2^;

   writeln(pi1^:2, pi2^:2, pi3^:2);

   With pnt1^ Do

      Begin

      x:=3.5;

      y:=-0.5;

      For i:=1 To 3 Do

         Begin

         x:=x+1.0;

         y:=y+2.0;

         New (pnts[i]);

         pnts[i]^:=pnt1^;

         End;

      End;

   WriteLn (pnts[2]^.x:5:2, pnts[3]^.y:5:2);

End.

Вывод:

0 0 0

 5.50 5.50


Задание 2

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

Блок схема:


Программа:

Program Lab03_02;

   Type

      tDate = Record

         Day   : 1..31;

         Month : 1..12;

         Year  : 1975..1995;

      End;

      tStudent = Record

         FullName:String;

         TelephoneNumber:String;

         BirthDate:tDate;

         Gender:String;

         Mark:Integer;

      End;

      ptrStudents = ^tStudents;

      tStudents = Array[1..50] of tStudent;

   Var Students:ptrStudents;

       DataBase:File Of tStudent;

       CurrentStudent:tStudent;

       a, Changes, Number:Integer;

Begin

   Assign (DataBase, 'data.txt');

   Reset (DataBase);

   Number:=FileSize(DataBase);

   GetMem (Students, Number*SizeOf(tStudent));

   For a:=1 To Number Do

      Read (DataBase, Students^[a]);