37807

Вказівники

Лабораторная работа

Информатика, кибернетика и программирование

Мета: навчитися програмувати з використанням вказівників та динамічних змінних, створювати та опрацьовувати черги та стеки.

Украинкский

2013-09-25

2.14 MB

1 чел.

3

Міністерство освіти і науки України

Хмельницький національний університет

Кафедра системного програмування

Лабораторна робота №1

з програмування

на тему:

«Вказівники»

Виконав:

Студент групи КІ-10-1

Ноль М.Г.

Перевірив:

Мостовий С.В.

Хмельницький

2011

Лабораторна робота №1

Тема: вказівники.

Мета: навчитися програмувати з використанням вказівників та динамічних змінних,  створювати та опрацьовувати черги та стеки.

Завдання

Дано число D і «покажчики» P1 й P2 на початок і кінець черги (якщо черга порожня, то P1=P2=nil). Записати елемент зі значенням  D у кінець черги та вивести нові адреси початку і кінця черги.

uses crt;

type vkaz=^cherga;

       cherga=record

           num:integer;

           next:vkaz

           end;

procedure add(var a:vkaz);

   var temp:vkaz;

   begin

   new(temp);

   temp^.next:=a;

   temp^.num:=random(100);

   a:=temp;

   end;

procedure addnew(var a:vkaz; D:integer);

   var temp:vkaz;

   begin

   new(temp);

   temp^.next:=a;

   temp^.num:=D;

   a:=temp;

   end;

function tail(a:vkaz):vkaz;

   begin

   while a<>nil do

       begin

       tail:=a;

       a:=a^.next;

       end;

   end;

procedure create(var a,p1,p2:vkaz; var n:integer);

   var i:integer;

   begin

   write('vvedit kilkist chysel: ');

   readln(n);

   if n<>0 then

       begin

       for i:=1 to n do

           begin

           add(a); write(a^.num,' ');

           if i=1 then p1:=a;

           a:=a^.next;

           end;

        p2:=tail(a);

       writeln;

       writeln('pochatok: ',seg(p1^),ofs(p1^));

       writeln('kinets: ',seg(p2^),ofs(p2^));

       end

       else writeln('pochatok i kinets = NIL');

   end;

procedure newP(var a,p1,p2:vkaz; n:integer);

    begin

    if n=0 then p1:=a;

    p2:=tail(a);

    writeln('pochatok: ',seg(p1^),ofs(p1^));

    writeln('kinets: ',seg(p2^),ofs(p2^));

    end;

procedure free(var a:vkaz; p1:vkaz);

    var temp:vkaz;

    begin  a:=p1;

    while a<>nil do

        begin

       temp:=a;

       a:=a^.next;

       dispose(temp);

       end;

    end;

   var el,p1,p2:vkaz; n,d:integer;

begin clrscr; randomize;

create(el,p1,p2,n);

write('vvedit chyslo D: ');  readln(d);

addnew(el,d);

newP(el,p1,p2,n);

free(el,p1);

repeat until keypressed

end.

Висновок.  Виконавши лабораторну роботу, я навчився працювати з вказівниками та динамічними змінними, створювати черги та додавати нові елементи, виділяти пам'ять для динамічних змінних та звільняти її, а також виводити адреси початку та кінця черги.