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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 18.5.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. ТЕМА 124 ВРЕМЯ0 ОЦЕНКА2
2. Реферат- Уход за плодоносящим садом
3. Возникновение оперы
4. по теме 1 междисциплинарного комплекса 01
5. Конституционное право как наука
6. Где носит этого усатого мудака
7. Лекция 24.12.11 Переводческие.html
8. Александр Сергеевич Грибоедов Горе от ума Трагедия Чацкого
9. Армавир
10. На тему - СНІД