Страницу Назад
Поискать другие аналоги этой работы
150 Лабораторная работа №1 «Абстрактный тип данных (ADT) Множество (на шаблоне)»ID: 173284Дата закачки: 25 Сентября 2016 Продавец: 8arracuda (Напишите, если есть вопросы) Посмотреть другие работы этого продавца Тип работы: Работа Лабораторная Форматы файлов: Microsoft Word Сдано в учебном заведении: СибГУТИ Описание: Лабораторная работа №1 Абстрактный тип данных (ADT) Множество (на шаблоне) Тема: Классы C++Builder и шаблоны, стандартный класс TList Цель: Сформировать практические навыки: реализации абстрактных типов данных с помощью классов C++Builder и шаблонов Задание - В соответствии с приведенной ниже спецификацией реализовать тип «множество». Для тестирования в качестве значения для типа T выберите тип int. - Протестировать каждую операцию, определенную на типе данных од-ним из методов тестирования. Спецификация типа данных «множество» ADT TSet Данные Множества - это изменяемые неограниченные наборы элементов типа T. Содержимое множества изменяется следующими операциями: - Опустошить (опустошение множества); - Добавить (добавление элемента во множество); - Удалить (извлечение элемента из множества). Множество поддерживает следующую дисциплину записи и извлечения элементов: элемент может присутствовать во множестве только в одном экземпляре, при извлечении выбирается заданный элемент множества и удаляется из множества. Операции Операции могут вызываться только объектом «множество» (тип TSet), указатель на который передаётся в них по умолчанию. При описании операций этот объект в разделе «Вход» не указывается. Таблица 1. Описание операций на ADT TSet. Наименование Операции Описание Конструктор Начальные значе-ния: Нет. Процесс: Создаёт пустое множество элементов типа T. Опустошить Вход: Нет. Предусловия: Нет. Процесс: Удаляет из множества все элементы. Выход: Нет. Постусловия: Множество - пусто. Добавить Вход: d – элемент типа Т. Предусловия: Нет. Процесс: Добавляет d во множество, если в нем нет такого элемента. Выход: Нет. Постусловия: Множество содержит элемент d. Удалить Вход: d – элемент типа Т. Предусловия: Нет. Процесс: Удаляет элемент d из множества, если d принадлежит множеству. Выход: Нет. Постусловия: Множество не содержит элемент d. Пусто Вход: Нет. Предусловия: Нет. Процесс: Определяет, содержит ли множество элементы. Воз-вращает значение True, если множество не пусто, False – в противном случае. Выход: Булевское значение. Постусловия: Нет. Принадлежит Вход: d – элемент типа Т. Предусловия: Нет. Процесс: Определяет, принадлежит ли элемент d множеству. Возвращает True, если d принадлежит множеству, False - в противном случае. Выход: Булевское значение. Постусловия: Нет. Объединить Вход: Множество q. Предусловия: Нет Процесс: Создаёт множество, полученное в результате объе-динения множества с множеством q. Выход: Множество. Постусловия: Нет. Вычесть Вход: Множество q. Предусловия: Нет. Процесс: Создаёт множество, полученное в результате вычи-тания из множества множество q. Выход: Множество. Постусловия: Нет. Умножить Вход: Множество q. Предусловия: Нет. Процесс: Создаёт множество, являющееся пересечением мно-жества с множеством q. Выход: Множество. Постусловия: Нет. Элементов Вход: Нет. Предусловия: Нет. Процесс: Подсчитывает и возвращает количество элементов во множестве, если множество пустое - ноль Выход: Целое - количество элементов во множестве. Постусловия: Нет. Элемент Вход: j - номер элемента множества. Предусловия: Нет. Процесс: Обеспечивает доступ к элементу множества для чте-ния по индексу j так, что если изменять j от 1 до коли-чества элементов во множестве, то можно просмот-реть все элементы множества. Выход: Элемент множества типа Т. Постусловия: Множество не модифицируется end TSet Рекомендации к выполнению - Тип данных реализовать, используя классы C++Builder и шаблон. - Реализуйте множество, используя класс TSet, параметризуя его с помощью шаблона. Описание реализации в виде диаграммы классов UML и описание класса TSt представлено ниже: //-----------------файл 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));}; 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== 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 << ", "; } return stream << "}"; } Для обработки объектов с помощью множества TSet, пользователю необходимо будет вместо идентификатора T подставить тип его объектов. - Для реализации множества опишите класс (тип TSet), наследующий от класса Tlist. - Типы данных реализуйте в отдельном модуле USET. Комментарии: Уважаемый слушатель, дистанционного обучения, Оценена Ваша работа по предмету: Современные технологии в программировании (часть 2) Вид работы: Лабораторная работа 1 Оценка:Зачет Дата оценки: 18.09.2016 Размер файла: 385,9 Кбайт Фаил: ![]()
Скачано: 7 Коментариев: 0 |
||||
Есть вопросы? Посмотри часто задаваемые вопросы и ответы на них. Опять не то? Мы можем помочь сделать! Некоторые похожие работы:Лабораторная работа №1. Абстрактный тип данных (ADT) «Множество (на шаблоне)» по дисциплине "Современные технологии программирования".Современные технологии программирования. Пять лабораторных + Курсовая работа. Вариант 12. Калькулятор простых дробей. Современные технологии программирования. Пять лабораторных + Курсовая работа. Вариант 16. Калькулятор простых дробей. Современные технологии в программировании (часть 2) Лабораторная работа №№1-5 Вариант 12 Современные технологии программирования. Лабораторные работы №1-5 Ещё искать по базе с такими же ключевыми словами. |
||||
Не можешь найти то что нужно? Мы можем помочь сделать! От 350 руб. за реферат, низкие цены. Спеши, предложение ограничено ! |
Вход в аккаунт:
Страницу Назад
Cодержание / Современные технологии программирования / Лабораторная работа №1 «Абстрактный тип данных (ADT) Множество (на шаблоне)»
Вход в аккаунт: