У вас вопросы?
У нас ответы:) SamZan.net

Отчет по лабораторной работе 10 ldquo;Линейные спискиrdquo; Выполнил- студент групп

Работа добавлена на сайт samzan.net: 2016-03-05

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.4.2025

Министерство образования и науки РФ.

Федеральное агентство по образованию.

Томский Государственный Университет Систем Управления и

Радиоэлектроники.

ТУСУР.

Кафедра компьютерных систем в управлении и проектировании.

КСУП.

Отчет по лабораторной работе №10

“Линейные списки”

Выполнил: студент группы №585-1

Отюцкий К.Ю.

Проверил: преподаватель кафедры КСУП

Потапова Е.А.

ТОМСК – 2006г.

Содержание

1. Введение___________________________________________________________      стр.3

2.Основная часть:

          а)условие задачи №6______________________________________________     стр.4

           б)программа с комментариями____________________________________     стр.4

          в) условие задачи №21_____________________________________________     стр.5

          г) программа с комментариями____________________________________     стр.5

3.Вывод______________________________________________________________      стр.7

 

Введение.

Память для локальных переменных отводится при вызове подпрограммы,  при выходе  память освобождается. Память для      глобальных переменных отводится в начале выполнения подпрограммы. Таким образом, память отводится под переменные с учетом статической структуры программы, поэтому такие переменные называются статическими.

Динамические переменные:  образование новых переменных в любой момент работы программы, уничтожение созданных переменных в произвольный момент выполнения (произвольное отведение и освобождение памяти).

Средство доступа к статическим переменным - идентификатор. Динамические переменные, количество которых и место расположения в памяти неизвестно - невозможно обозначить идентификаторами. Средство доступа к динамическим переменным - указатель на место их текущего расположения в памяти.

Особое значение придается структурам простой формы; приемы работы с более сложными структурами можно получить из способов работы с основными видами структур: линейными списками и деревьями.

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

Основная часть

Задача №6.

Используя представление последовательности чисел в виде линейного списка, напишите программу, сортировки этой последовательности при помощи алгоритма простого обмена.

Текст программы с коментариями

program lab10_6;

uses crt;

const n=10;

type spisok=^element;

    element=record

    info:integer;

    next:spisok;

    end;

var l,s,p:spisok;

   i,j:integer;

procedure sort(p:spisok);

var

  chg:integer;

  b:boolean;

begin

    for j:=1 to n-1 do begin

    p:=l;

    for i:=1 to n-j do begin

           b:=false;

           s:=p^.next;

           if p^.info>s^.info then b:=true;

           if b then

      begin

           chg:=p^.info;

           p^.info:=s^.info;

           s^.info:=chg;

      end;

      p:=p^.next;

      end;

      end;

end;

begin

clrscr;

{======zapolnenie spiska======}

for i:=1 to n-1 do begin

new(p);

readln(p^.info);

p^.next:=s;

s:=p;

end;

new(p);

readln(p^.info);

p^.next:=s;

l:=p;

{======sortirovka spiska======}

sort(p);

{======vyvod spiska======}

while p<>nil do begin

write(p^.info:5);

p:=p^.next;

end;

{========================}

readln;

end.

Задача №21

Напечатать в порядке возрастания все неправильные несократимые дроби со знаменателями, меньшими заданного натурального числа p. Массивов не заводить.

 

Текст программы с комментариями

uses crt;

type

   pnt=^r;

   r = record

     chis:integer;

     znam:integer;

     next:pnt

   end;

var

  q,up:pnt;

  i,j,p,x,y,z,vr,k,s:integer;

  min:real;

  f:boolean;

procedure add (var q:pnt; x,y:integer);   {Процедура заполнения стека}

var

  t,p:pnt;

begin

    if q=nil then

      begin

           new(q);

           q^.chis:=x;

           q^.znam:=y;

           q^.next:=nil

      end

    else

      begin

           t:=q;

           while t^.next<>nil do t:=t^.next;

           new(p);

           t^.next:=p;

           p^.chis:=x; { формируем дробь }

           p^.znam:=y;

           p^.next:=nil;

      end;

end; { add }

{ проверяет условие сократимости }

function checking(m,n:integer):boolean;

var

  bool : boolean;

  i : integer;

begin

    if n<>1 then

      begin

           bool:=false;

             for i:=2 to n do

               if (m mod i = 0) and (n mod i = 0) then

                 begin

                      bool:=true;

                      break

                 end;

      end

    else bool:=true;

    checking:=bool

end; { checking }

begin

    clrscr;

    write('Введите p: ');

    readln(p);

    for i:=2 to p do

      begin

           for j:=i+1 to p do

             if not checking(i,j) then add(q,j,i);

      end;

    up:=q;

    { вывод }

    repeat

          write(q^.chis,'/',q^.znam,' ');

          q:=q^.next;

    until q=nil;

    writeln;

    writeln('=============================');

    { сортировка }

    q:=up;

    repeat

          vr:=0;

          q:=up;

          repeat

                if (q^.chis/q^.znam) > ((q^.next)^.chis/(q^.next)^.znam) then

                  begin

                       vr:=(q^.next)^.chis;

                       (q^.next)^.chis:=q^.chis;

                       q^.chis:=vr;

                       vr:=(q^.next)^.znam;

                       (q^.next)^.znam:=q^.znam;

                       q^.znam:=vr;

                  end;

                if q^.next<>nil then q:=q^.next;

          until q^.next=nil;

    until vr=0;

    { вывод }

    writeln;

    writeln('Отсортировали по возрастанию');

    q:=up;

    repeat

          write(q^.chis,'/',q^.znam,' ');

          q:=q^.next;

    until q=nil;

    readkey;

end.

Вывод

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




1. Большое значение для развития дошкольника имеет организация системы дополнительного образования в ДОУ ко.html
2. Их целью было не рождение детей а познание совершенства постижение совершенной Божией любви что и являетс
3. Отцы и пастыри
4. Актив у ній відображається майно підприємства; у правій частині під назвою Пасив відображаються власни
5. тема функциональных и предметнопространственных средств создающих условия для трудовой деятель 146 Гл
6. ТЕМА 5 ИНФЛЯЦИЯ Перед изучением данной темы внимательно прослушайте введение по теме
7.  Энергетический и кинематический расчеты привода
8. КОНСПЕКТ ЛЕКЦИЙ ПО ДИСЦЕПЛИНЕ БАЗЫ ДАННЫХ
9. Testosteron Джоном Коенгом в 2000 году
10. Интеллектуальное развитие в детском возрасте