Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Рекомендации к выполнению




1. Тип данных реализовать, используя классы C++Builder и шаблон.

2. Реализуйте множество, используя класс TSet, параметризуя его с помощью шаблона. Описание реализации в виде диаграммы классов UML и описание класса TSet представлено ниже:

//-----------------файл UMain.cpp------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <stdarg.h>

#include "USet.h"

//---------------------------------------------------------------------------

 

#pragma argsused

//---------------------------------------------------------------------------

int main(int argc, char* argv[])

{

int i = 0;

TSet<int>* A = new TSet<int>();

TSet<int>* B = new TSet<int>();

(*A)<< 1;//{1}

*B << 1;

*B << 2;//{1, 2,}

TSet<int>* C = (*A) + (*B);//{1, 2,}

cout << "{1, 2,}: " << *C << endl;

TSet<int>* D = (*A) - (*B);//{}

cout << "{}: " << *D << endl;

TSet<int>* E = (*B) - (*A);//{2,}

cout << "{2,}: " << *E << endl;

TSet<int>* G = (*B) * (*A);//{1,}

cout << "{1,}: " << *G << endl;

for(int i = 0; i < 5; i++)

*A << i + 1;

cout << "{1,2,3,4,5}: " << *A << endl;

cin >> i;

return 0;

}

//-------------------------------------------------------------------

//--------файл USet.cpp----------------------------------------------

#include <vcl.h>

#include <math.h>

#include <iostream.h>

 

#ifndef USetH

#define USetH

//-------------------------------------------------------------------

#endif

//-------------------------------------------------------------------

template<class T>

class TSet : public TList

{

bool InSetInd(T a, int& j) const;

String GetSet(void) const;

int GetMembers(void) const {return Count;};

T GetItem(int i) const {return*( static_cast<T*>(Items[i]));};

public:

TSet();//Конструктор

TSet(const TSet<T>& P);//Копирующий конструктор

virtual __fastcall ~TSet(void);//Деструктор

void AddItem(T a);//Добавить элемент в множество

void RemItem(T a);//Удалить элемент из множества

bool IsEmpty(void); //Множество пусто

bool InSet(T a) const;

void Empty(void);

TSet<T>* operator + (const TSet<T>& P);//Сложение множеств

TSet<T>* operator - (const TSet<T>& P);//Вычитание множеств

TSet<T>* operator * (const TSet<T>& P);//Умножение множеств

TSet<T>& operator << (const T& m);

T operator [] (int i);//Одночлен по индексу

bool operator == (const TSet<T>& P);//Сравнение двух множеств

friend ostream& operator << (ostream & , const TSet<T>& S);

__property String Set = {read = GetSet};//Чтение множества в формате строки

__property T Member[int index] = {read = GetItem};

__property int Members = {read = GetMembers};

};

//-------------------------------------------------------------------

template<class T>

bool TSet<T>::InSetInd(T a, int& j) const

//проверяет присутствие элемента а во множестве

{

int i;

bool R = False;

for (int i = 0; i < Count;i++)

if (Member[i]== a)

{

R = True;

j = i;

break;

}

return R;

}

//-------------------------------------------------------------------

template <class T>

ostream& operator << (ostream& stream, TSet<T>& S)

{

stream << "{";

if(!S.IsEmpty())

{

for(int i = 0; i < S.Members; i++)

cout << S.Member[i] << ", ";

}

return stream << "}";

}

 

Для обработки объектов с помощью множества TSet, пользователю необходимо будет вместо идентификатора T подставить тип его объектов.

3. Для реализации множества опишите класс (тип TSet), наследующий от класса Tlist.

4. Типы данных реализуйте в отдельном модуле USET.


Поделиться:

Дата добавления: 2015-07-26; просмотров: 49; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты