Динамические переменные

Автор: Пользователь скрыл имя, 23 Декабря 2012 в 11:40, лабораторная работа

Описание работы

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

Работа содержит 1 файл

программирование №4.doc

— 135.50 Кб (Скачать)

 

МИНОБРНАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное  бюджетное образовательное учреждение

высшего профессионального  образования

«Ижевский государственный  технический университет имени  М.Т. Калашникова»

Кафедра «Программное обеспечение»

 

 

 

 

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

по дисциплине «Основы  программирования»

на тему «Динамические переменные»

 

 

Вариант №1

 

 

 

 

 

 

 

 

Выполнил

Студент гр. Б1-191-1                                                                      В.Н.Аброськин

 

Принял                                                                                                    И.В.Килин

 

 

 

 

Ижевск 2012

1. Постановка  задачи

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Иерархическая  схема

 

Спецификация:

mainMenu – выводит меню и вызывает необходимые процедуры;

getCloud – создаёт динамический список;

print – выводит содержимое списка;

recPrint – выводит содержимое списка в обратном порядке;

delElm – удаляет заданный элемент.

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Описание программы

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

 

4. Схема программы

 
5. Текст программы

 

program DinOchered;

type

    Tptr = ^Telem;

    Telem = record

        inf  : integer;

        link : Tptr;

    end;

var

    begQ : Tptr;

procedure addElem;

var

    add : Tptr;

    p   : Tptr;

begin

    new(add);

    add^.link := NIL;

    write('Введите значение добавляемого элемента: ');

    readln(add^.inf);

    if begQ = NIL then

        begQ := add

    else

    begin

        p := begQ;

        while p^.link <> NIL do

            p := p^.link;

        p^.link := add;

    end;

end;

procedure delElem;

var

    p : Tptr;

begin

    p := begQ;

    begQ := begQ^.link;

    p^.link := NIL;

    dispose(p);

end;

procedure printQ;

var

    p : Tptr;

begin

    p := begQ;

    while(p <> NIL) do

    begin

        write(p^.inf:3);

        p := p^.link;

    end;

end;

procedure recPrintQ(pp : Tptr);

begin

    if pp <> NIL then

    begin

        recPrintQ(pp^.link);

        write(pp^.inf:3);

    end;

end;

 

function mainMenu : integer;

var

    sel : integer;

begin

    repeat

        writeln('1 - ДОБАВИТЬ ЭЛЕМЕНТ В ОЧЕРЕДЬ');

        writeln('2 - УДАЛИТЬ ЭЛЕМЕНТ ИЗ ОЧЕРЕДИ');

        writeln('3 - ПЕЧАТЬ ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ');

        writeln('4 - РЕКУРСИВНАЯ ПЕЧАТЬ ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА К НАЧАЛУ');

        writeln('5 - ПОЛУЧИТЬ КОЛИЧЕСТВО ЭЛЕМЕНТОВ ОЧЕРЕДИ');

        writeln('6 - ВЫХОД');

        write('Выберите один из пунктов меню: ');

        readln(sel);

    until((sel >= 1) and (sel <= 6));

    writeln;

    mainMenu := sel;

end;

function getCountElem : integer;

var

    p : Tptr;

    k : integer;

begin

    k := 0;

    p := begQ;

    while(p <> NIL) do

    begin

        k := k + 1;

        p := p^.link;

    end;

    getCountElem := k;

end;

var

    sel : integer;

begin

    begQ := NIL;

    repeat

        sel := mainMenu;

        case sel of

            1:

            begin

                addElem;

                writeln;

                writeln('Элемент успешно добавлен в конец очереди!');

                readln;

            end;

            2:

            begin

                if(begQ = NIL) then

                    writeln('В очереди нет ни одного элемента! Удаление невозможно!')

                else

                begin

                    delElem;

                    writeln('Элемент успешно удален из начала очереди!');

                end;

                readln;

            end;

            3:

            begin

                if(begQ = NIL) then

                    writeln('В очереди нет ни одного элемента! Печать невозможна!')

                else

                begin

                    write('Элементы очереди имеют вид: ');

                    printQ;

                end;

                readln;

            end;

            4:

            begin

                if(begQ = NIL) then

                    writeln('В очереди нет ни одного элемента! Печать невозможна!')

                else

                begin

                    write('Элементы очереди имеют вид: ');

                    recPrintQ(begQ);

                end;

                readln;

            end;

            5:

            begin

                writeln('Количество элементов в очереди: ', getCountElem);

                readln;

            end;

        end;

    until(sel = 6);

end. 
6. Контрольный пример

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 1

 

Введите значение добавляемого элемента: 156

 

Элемент успешно добавлен в конец очереди!

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО  ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 1

 

Введите значение добавляемого элемента: 225

 

Элемент успешно добавлен в конец очереди!

1 - ДОБАВИТЬ ЭЛЕМЕНТ В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО  ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 1

 

Введите значение добавляемого элемента: 369

 

Элемент успешно добавлен в конец очереди!

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 1

 

Введите значение добавляемого элемента: 457

 

Элемент успешно добавлен в конец очереди!

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО  ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 1

 

Введите значение добавляемого элемента: 132

 

Элемент успешно добавлен в конец очереди!

1 - ДОБАВИТЬ ЭЛЕМЕНТ В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО  ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 3

 

Элементы очереди имеют вид: 156 225 369 457 132

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО  ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 4

 

Элементы очереди имеют  вид: 132 457 369 225 156

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 5

 

Количество элементов  в очереди: 5

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 2

 

Элемент успешно удален из начала очереди!

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО  ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 5

 

Количество элементов  в очереди: 4

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО  ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 6

 

 

 

1 - ДОБАВИТЬ ЭЛЕМЕНТ  В ОЧЕРЕДЬ

2 - УДАЛИТЬ ЭЛЕМЕНТ  ИЗ ОЧЕРЕДИ

3 - ПЕЧАТЬ ЭЛЕМЕНТОВ  ОЧЕРЕДИ ОТ НАЧАЛА К КОНЦУ

4 - РЕКУРСИВНАЯ ПЕЧАТЬ  ЭЛЕМЕНТОВ ОЧЕРЕДИ ОТ КОНЦА  К НАЧАЛУ

5 - ПОЛУЧИТЬ КОЛИЧЕСТВО  ЭЛЕМЕНТОВ ОЧЕРЕДИ

6 - ВЫХОД

Выберите один из пунктов  меню: 3

 

В очереди нет ни одного элемента! Печать невозможна!


Информация о работе Динамические переменные