Программирование на С
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ.
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННО-ТЕХНОЛОГИЧЕСКИЙ НИВЕРСИТЕТ
им. К.Э. ЦИОЛКОВКОГО
КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Курсовая работ второго курса второго семестра.
Руководитель: Чернадский
Дата сдачи:
Подпись: __<
Студент: Лицентов Д.Б.
Группа: 3ИТ-2-26
Москва
1998
Постановка задачи.
Необходимо реализовать список вида:
Техническое описание программы.
В программе предусмотрена работ со списком, которая включает в себя:
1. Создание нового вписка;
2. Добавление элемента в список;
3. Вывод списка на дисплей;
4. Сохранение данных списка в файл;
5. Читение данных из файла;
6. даление списка из памяти компьютера;
7. Поиск элемента в списке;
8. Сортировка списка;
9. даление элемента списка.
Спецификация программы.
Ввод данных в программу может осуществляться двумя спосабами: ввод с клавиатуры или из файла.
Для работы с файлом необходимо на соответствующий запрос программы ввести имя файла, из которого будут взяты данные для построения списка.
Для нормальной работы программы требуется
Текст программы.
#include <iostream.h>
#include <fstream.h>
class List
<{struct Tree
<{int Body;
Tree *LP;
Tree *RP;
Tree(int Bdy=0) {Body=Bdy; LP=NULL; RP=NULL;}
<~Tree() {Body=0; LP=NULL; RP=NULL;}
<};
List(int Digit=0);
Tree *Root;
List *LNext;
List *LPrev;
<};
List::List(int Digit)
<{Root=NULL;
<{Tree *PTree;
Root=PTree; <{Tree
*PTree1=Root; do <{if
(PTree1->LP!=NULL) а
<} <} <} class TreeWork : private List <{public:
List *BegP; List *PList;
<}; int TreeWork::MainMenu() <{cout<<endl<<"Main
Menu:"<<endl<<endl;
do <{cin>>i; <} return i; <} int TreeWork::SubMenu() <{cout<<endl<<"Sub
Menu:"<<endl;
do <{cin>>i; <} return i; <} int TreeWork::SubWork(int Task) <{switch (Task) <{case 1 :
SortByIncrease(); break; //Increase <} return 0; <} int TreeWork::Work(int Task) <{switch (Task) <{case 1 :
ElementQuantity=MakeNewList();а <} return 0; <} void TreeWork::TreeWorkStart() <{ElementQuantity=0; do {} while
(Work(MainMenu())!=-1); <} int TreeWork::MakeNewList() <{if (BegP!=NULL)
<{cout<<endl<<"You have existing list!"; return 0;}
do
<{cin>>Quant;
<}
<{cout<<endl<<"Input digit: ";
<{BegP=PList;
BegP->LNext=BegP;
BegP->LPrev=BegP;
<{List
*PList1=BegP->LPrev;
<{BegP->LNext=PList; BegP->LPrev=PList;
<{BegP->LPrev=PList;
<} <} return Quant; <} int TreeWork::AddElements() <{if (BegP==NULL) <{MakeNewList();
return 0;}
do
<{cin>>Quant;
<}
<{cout<<endl<<"Input digit: ";
List
*PList1=BegP->LPrev;
<{BegP->LNext=PList;
BegP->LPrev=PList;
<{BegP->LPrev=PList;
<} return Quant; <} int TreeWork::PrintList() <{if (BegP==NULL)
<{cout<<endl<<"The list is empty!"<<endl;
return -1;}
do
<{cout<<endl<<" "<<i<<" element:
"<<endl;
GoThroughTree(PList->Root);
return 0; <} void TreeWork::GoThroughTree(Tree *L) <{Tree *PL=L, *PL1; <{PL1=PL;
GoThroughTree(PL);} <{PL1=PL;
GoThroughTree(PL);} <} void TreeWork::Erase(Tree *L) <{Tree *PL=L; <{PL=PL->LP; Erase(PL);} <{PL=PL->RP; Erase(PL);}
<} void TreeWork::EraseList() <{if (BegP!=NULL) <{do <{List
*PList1=BegP->LNext;
BegP->LNext=PList;
Erase(PList1->Root); delete []
PList1; <} BegP=NULL;
PList=NULL; <} <} int TreeWork::DeleteElement() <{cout<<endl<<"Input number of
element: ";
<{cout<<endl<<"Error!"; return -1;} Number--;
List
*PList1=PList->LNext, *PList2=PList->LPrev;
<{PList1->LPrev=PList2;
delete []
PList; BegP=PList1;
<{PList1->LPrev=PList2;
delete []
PList;
ElementQuantity--; return 0; <} int TreeWork::FindElement() <{cout<<endl<<"Input number,
you want to find: ";
do <{Tree
*PT=PList->Root;
<{cout<<endl<<"Element with this number:
"<<endl;
GoThroughTree(PList->Root);
<}
return -1; <} int TreeWork::SortByIncrease() <{ List
*PList1=BegP; PList=BegP; do <{do <{if
(PList1->Root->Body>PList->Root->Body) <{Tree *PT;
<}
<} return 0; <} int TreeWork::SortByDecrease() <{ List
*PList1=BegP; PList=BegP; do <{do <{if
(PList1->Root->Body<PList->Root->Body) <{Tree *PT;
<}
<} return 0; <} int TreeWork::SaveList() <{if (BegP==NULL)
<{cout<<endl<<"The list is empty!"<<endl;
return -1;}
F.open(FileName);
do <{i=0;
Mass=PList->Root->Body;
F<<Mass<<endl; F<<Mass; <} F.close(); delete []
FileName; return 0; <} int TreeWork::OpenList() <{if (BegP!=NULL)
<{cout<<endl<<"The list is alredy
exist!"<<endl; return -1;}
ElementQuantity=0; Next=f.peek(); <{
<{BegP=PList;
BegP->LNext=BegP; BegP->LPrev=BegP;
<{List
*PList1=BegP->LPrev;
<{BegP->LNext=PList; BegP->LPrev=PList;
<{BegP->LPrev=PList;
<} Next=f.peek();
ElementQuantity++; <} delete []
FileName; return 0; <} TreeWork TW; void main() <{TW.TreeWorkStart();} Результаты работы программы. Начало работы: