- •Расчетно-графическая работа по дисциплине «Информатика и программирование»
- •Цель: сформировать практические навыки разработки консольных приложений с использованием:
- •Задание
- •Порядок выполнения
- •Var o: ordlist; z:OrdIntType;
- •Interface
- •Implementation
- •Var z:plist; k:pnode;
- •Var p: pNode;
- •If (IsEmpty(l) and IsEmpty(t)) or IsEmpty(t) then exit;
- •If IsEmpty(l) and not IsEmpty(t) then
- •Interface
- •Var p:pnode;
- •Var p: pNode;
- •Var I:integer; k:pnode;
- •Var p:pnode; I:integer;
- •Var p,l,z:pnode;
Министерство образования и науки Российской Федерации
Новосибирский государственный Технический Университет
Кафедра экономической информатики
Расчетно-графическая работа по дисциплине «Информатика и программирование»
Выполнила студентка
Группы ФБИ-11
Рыбаченко А.А.
Преподаватель: Зайцев М. Г.
Новосибирск, 2012
Цель: сформировать практические навыки разработки консольных приложений с использованием:
-
абстрактных типов данных;
-
динамических информационных структур;
-
типизированных файлов;
-
тестирования программ.
Задание
Упорядочить в заданном порядке записи типизированного файла с помощью упорядоченного списка.
Таблица 1. Вариант задания.
Номер варианта |
Тип записей |
Упорядочение |
3 |
T = record re, im: real end; - комплексные числа;
|
по возрастанию (упорядочение выполняется по значению модуля комплексного числа)
|
Для выполнения работы вам необходимо реализовать динамическую информационную структуру – упорядоченный список .
Порядок выполнения
-
В режиме консольного приложения в отдельном модуле UOrderedList:
-
опишите необходимые типы и реализуйте упорядоченный в соответствии с вариантом задания список;
-
протестируйте каждую операцию. Тестовые наборы поместите в таблицу следующего вида:
-
Создайте новое консольное приложение и подключите к нему разработанный модуль UOrderedList.
-
В головной программе консольного приложения (файл с расширением 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);