Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зайцев М. Г. / РГР.docx
Скачиваний:
14
Добавлен:
02.01.2020
Размер:
41.8 Кб
Скачать

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

Новосибирский государственный Технический Университет

Кафедра экономической информатики

Расчетно-графическая работа по дисциплине «Информатика и программирование»

Выполнила студентка

Группы ФБИ-11

Рыбаченко А.А.

Преподаватель: Зайцев М. Г.

Новосибирск, 2012

Цель: сформировать практические навыки разработки консольных приложений с использованием:

  • абстрактных типов данных;

  • динамических информационных структур;

  • типизированных файлов;

  • тестирования программ.

Задание

Упорядочить в заданном порядке записи типизированного файла с помощью упорядоченного списка.

Таблица 1. Вариант задания.

Номер

варианта

Тип записей

Упорядочение

3

T = record re, im: real end;

- комплексные числа;

по возрастанию (упорядочение выполняется по значению модуля комплексного числа)

Для выполнения работы вам необходимо реализовать динамическую информационную структуру – упорядоченный список .

Порядок выполнения

  1. В режиме консольного приложения в отдельном модуле UOrderedList:

  • опишите необходимые типы и реализуйте упорядоченный в соответствии с вариантом задания список;

  • протестируйте каждую операцию. Тестовые наборы поместите в таблицу следующего вида:

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

  2. В головной программе консольного приложения (файл с расширением dpr) выполните следующее:

  • создайте типизированный файл на диске (тип записей определяется вашим вариантом);

  • заполните файл записями;

  • выведите содержимое файла на экран;

  • создайте пустой упорядоченный список;

  • перепишите в него записи из файла;

  • удалите файл;

  • создайте новый файл;

  • перепишите в него записи из упорядоченного списка;

  • выведите содержимое файла на экран;

  • проанализируйте результат.

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

program PStack;

{$APPTYPE CONSOLE}

uses

SysUtils,

OrderedList,

UList,

Windows;

const path='OrdList.dat';

Var o: ordlist; z:OrdIntType;

begin

SetConsoleCp(1251); //Кирилизация

SetConsoleOutputCp(1251);

o:=CreateL;

assignFile(z,path);

mainmenu(o,z); //Вызов основного меню

readln;

end.

unit UList;

Interface

uses SysUtils;

type

//---------------------Исключительные ситуации----------------------------------

EListEmpty = class(Exception)

end;

//---------------------Тип элементов списка-------------------------------------

T = record

re, im: real;

end;

//---------------------Узел списка----------------------------------------------

PNode = ^Node;

Node = record

key : T;

next : PNode;

end;

// --------------------Дескриптор списка----------------------------------------

PList = ^List;

List = record

first: PNode;//указатель на первый элемент списка

last : PNode;//указатель на последний элемент списка

size : integer;//число элементов в списке

end;

// --Операции на списке---------------------------------------------------------

// --------------------Создать пустой список------------------------------------

function CreateL: PList;

// --------------------Число элементов списка-----------------------------------

function Size(L: PList): integer;

// --------------------Список пуст----------------------------------------------

function IsEmpty(L: PList): Boolean;

// --------------------Взять голову списка (слева)------------------------------

function Head(L: PList): T;

// --------------------Добавить элемент к списку (справа)-----------------------

procedure AddRight(L: PList; E: T);

// --------------------Добавить элемент к списку (слева)------------------------

procedure AddLeft(L: PList; E: T);

// --------------------Объединить два списка в один-----------------------------

procedure Merge(L,T: PList);

//---------------------Освобождает выделенную под список память-----------------

procedure DelList(var L: PList);

// --------------------Выводит значения элементов списка в строку-------------

function ListToStr(L: PList): String;

procedure AddInPos(var L:plist; a:t; p:pnode);