Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_k_ekzamenu_OOP.rtf
Скачиваний:
4
Добавлен:
24.09.2019
Размер:
526.36 Кб
Скачать
  1. Названия образуются от количества связующих список указателей в каждом объекте списка.

  2. С писок состоит из узлов, узлы представляют собой абстрактные классы. Начало — это начало обработки промежуточных узлов списка, которые отвечают за хранение данных, указатель узла - “хвост” обязательно имеет значение null (0).

  3. // программа работы с динамическими списками при помощи классов. // однонаправленные списки, двунаправленные списки и деревья.

  4. #include <iostream.h> #include <iomanip.h> #include <fstream.h> ofstream fout("rez.txt"); ifstream fin("rez.txt");

  5. class Data { public:             Data ();             ~Data(){delete fam;}             int Compare(const Data &);             void Show(); private:             char fam[25];             float ball; }; Data::Data() { cout<<"\n Введите фамилию и средний балл :";             cin>>fam>>ball; } void Data::Show() {          cout.width(25);             cout.fill(' ');             cout<<fam;             cout.width(10);             cout.fill('-');             cout.precision(3);             cout<<ball<<"\n";             fout.width(25);             fout.fill(' ');             fout<<fam;             fout.width(10);             fout.fill('-');             fout.precision(3);             fout<<ball<<"\n";             //fout<<fam<<"--"<<ball<<endl; } int Data::Compare(const Data &theO) { if(strcmp(fam,theO.fam)<0)return -1; if(strcmp(fam,theO.fam)==0)return 0; if(strcmp(fam,theO.fam)>0)return 1; } class Node; class HeadNode; class TailNode; class InternalNode;

  6. class Node {public:

  7.             Node(){}             virtual ~Node(){} virtual Node* Insert(Data* theData)=0;             virtual void Show()=0; private: }; class InternalNode:public Node {public: InternalNode(Data *theData, Node *next) ; ~InternalNode(){delete myNext,delete myData;} virtual Node* Insert(Data *theData); virtual void Show() {myData->Show();myNext->Show();} private:             Data* myData;             Node* myNext; }; InternalNode::InternalNode(Data *theData,Node*next): myData(theData),myNext(next) {} Node* InternalNode ::Insert(Data *theData) { int result=myData->Compare(*theData); switch(result) { case  0: case1:{InternalNode *dataN=new InternalNode (theData,this);             return dataN;} case-1:{myNext=myNext>Insert(theData);             return this;}                         }             return this; } class TailNode:public Node { public:             TailNode(){}             ~TailNode() {}             virtual Node* Insert(Data *theData);             virtual void Show(){ } private: }; Node* TailNode::Insert(Data *theData) { InternalNode *dataN=new InternalNode (theData,this);             return dataN; } class HeadNode:public Node {public: HeadNode(){myNext=new TailNode;}; ~HeadNode(){delete myNext;} virtual Node* Insert(Data *theData); virtual void HeadNode::Show(); private:             Node* myNext; }; void HeadNode::Show() { cout<<"        Фамилия         "<<"   балл  "<<endl; fout<<"        Фамилия         "<<"   балл  "<<endl;             myNext->Show();             } Node* HeadNode::Insert(Data *theData) {             myNext=myNext>Insert(theData);             return this; }

  8. class Admin {public:             Admin();             ~Admin(){delete myHead;}             void Insert(Data* pData); void ShowAll(){myHead->Show();} private:             HeadNode* myHead; }; Admin::Admin() {             myHead=new HeadNode; } void Admin:: Insert(Data*pData) {             myHead->Insert(pData); } int main() {             Data* pData;             int val=1;             Admin ll;             while(val!=0)             {                         pData=new Data();                                                  ll.Insert(pData); cout<<"хотите закончить ввод? Если да, то введите 0";                         cin >>val;             }             ll.ShowAll(); cout<<"********************************\n";             fout.close();             return 0;

                  1. 23. Передача в функции объектов класса. Решение проблемы вызова конструктора и деструктора при работе локальных функций. Примеры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]