Лабораторная работа №1 «Абстрактный тип данных (ADT) Множество (на шаблоне)»

Состав работы

material.view.file_icon
material.view.file_icon
material.view.file_icon Лаборатоная работа 1.doc
material.view.file_icon
material.view.file_icon PSet.bpf
material.view.file_icon PSet.bpr
material.view.file_icon PSet.cpp
material.view.file_icon PSet.exe
material.view.file_icon PSet.obj
material.view.file_icon PSet.res
material.view.file_icon PSet.tds
material.view.file_icon USet.h

Необходимые программы

Работа представляет собой rar архив с файлами (распаковать онлайн), которые открываются в программах:
  • 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[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 подставить тип его объектов.
- Для реализации множества опишите класс (тип TSet), наследующий от класса Tlist.
- Типы данных реализуйте в отдельном модуле USET.

Дополнительная информация

Уважаемый слушатель, дистанционного обучения,
Оценена Ваша работа по предмету: Современные технологии в программировании (часть 2)
Вид работы: Лабораторная работа 1
Оценка:Зачет
Дата оценки: 18.09.2016
Лабораторная работа №1. Абстрактный тип данных (ADT) «Множество (на шаблоне)» по дисциплине "Современные технологии программирования".
Тема: Классы C++Builder и шаблоны, стандартный класс TList Цель: Сформировать практические навыки: реализации абстрактных типов данных с помощью классов C++Builder и шаблонов. Задание: 1. В соответствии с приведенной ниже спецификацией реализовать тип «множество». Для тестирования в качестве значения для типаT выберите тип int. 2. Протестировать каждую операцию, определенную на типе данных одним из методов тестирования. Спецификация типа данных «множество». ADT TSet Данные Множества - это из
User Doctor_Che : 11 декабря 2013
40 руб.
Контрольная работа Абстрактный тип данных (ADT) «Полином»
Тема: Классы С++, библиотека STL, библиотечный класс Tlist C++ Builder. Цель: Сформировать практические навыки реализации абстрактных типов данных с помощью классов. Задание: 1. Реализовать тип «полином», в соответствии с приведенной ниже спецификацией. 2. Протестировать каждую операцию, определенную на типе данных. Спецификация абстрактного типа данных «Полином». ADT TPoly Данные Полиномы Tpoly - это неизменяемые полиномы с целыми коэффициентами. Операции Операции могут вызываться только объек
User 8arracuda : 22 мая 2016
200 руб.
Лабораторная работа № 9 по дисциплине "Современные технологии программирования.". Абстрактный тип данных (ADT) Множество (контейнер).
Тема: Классы Object Pascal, стандартный класс Tlist. Цель: Сформировать практические навыки: реализации абстрактных типов данных с помощью классов Object Pascal. Задание: 1. В соответствии с приведенной ниже спецификацией реализовать тип «множество». 2. Оттестировать каждую операцию, определенную на типе данных одним из методов тестирования. 3. Оттестировать тип данных в целом. Спецификация типа данных «множество» ADT TSet Данные Множества - это изменяемые неограниченные наборы элементов типа
User Doctor_Che : 9 февраля 2012
40 руб.
Абстрактный тип данных (ADT) «полином». Лабораторная работа № 7
Тема: Классы Object Pascal, стандартный класс Tlist. Цель: Сформировать практические навыки: реализации абстрактных типов данных с помощью классов Object Pascal. Задание 1. Реализовать тип «полином», в соответствии с приведенной ниже спецификацией. 2. Оттестировать каждую операцию, определенную на типе данных одним из методов тестирования. 3. Оттестировать тип данных в целом.
User new2011 : 2 марта 2013
35 руб.
Современные технологии программирования. Абстрактный тип данных (ADT) p - ичное число. Лабораторная работа №1
Задание 1.Реализовать абстрактный тип данных «р-ичное число», используя класс Object Pascal, C++ в соответствии с приведенной ниже спецификацией. 2.Протестировать каждую операцию, определенную на типе данных, одним из методов тестирования.
User wchg : 26 августа 2013
149 руб.
Современные технологии программирования. Лабораторная работа № 1. Абстрактный тип данных (ADT) p - ичное число
Лабораторная работа № 1 Абстрактный тип данных (ADT) p - ичное число Задание Тема: Классы Object Pascal, С++. Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pascal, С++. Задание: Реализовать абстрактный тип данных «р-ичное число», используя класс Object Pascal, C++, в соответствии с приведенной ниже спецификацией. Протестировать каждую операцию, определенную на типе данных, одним из методов тестирования.
User JulDir : 28 октября 2012
39 руб.
Лабораторная работа № 1 по дисциплине "Современные технологии программирования". Абстрактный тип данных (ADT) p - ичное число.
Тема: Классы Object Pascal, С++. Цель: Сформировать практические навыки: реализации абстрактного типа данных с помощью классов Object Pascal, С++. Задание: 1. Реализовать абстрактный тип данных «р-ичное число», используя класс Object Pascal, C++, в соответствии с приведенной ниже спецификацией. 2. Протестировать каждую операцию, определенную на типе данных, одним из методов тестирования. Спецификация типа данных «р-ичное число». ADT TPNumber
User Doctor_Che : 9 февраля 2012
75 руб.
Лабораторная работа №1. Абстрактный тип данных простая дробь
Лабораторная работа 1. Абстрактный тип данных простая дробь Цель Сформировать практические навыки реализации абстрактных типов данных в соответствии с заданной спецификацией с помощью классов С++. Задание 1. Реализовать абстрактный тип данных «простая дробь», используя класс С++ в соответствии с приведенной ниже спецификацией. 2. Протестировать каждую операцию, определенную на типе данных одним из методов тестирования. Спецификация типа данных «простые дроби». ADT TFrac Данные Простая дробь (т
User aiki : 20 сентября 2020
300 руб.
Философия символического мира человека, человек в мире культуры
Знание, будучи результатом сознания и познания, с необходимостью принимает форму языка, выражается системой чувственно воспринимаемых предметов - знаков. Иначе как через знаки, и, прежде всего знаки языка, один человек не может передать другому свое понимание вещей, свои представления, понятие о них. В отношении знания язык обладает определенной универсальностью, но только в том смысле, что любое знание, чтобы стать доступным другим людям, должно получить свое знаковое, языковое выражение. Испол
User Lokard : 18 ноября 2013
10 руб.
Управление рентабельностью на предприятии
Теоретические аспекты управления рентабельностью предприятия. Понятие рентабельности и ее роль в современных условиях. Система показателей рентабельности и факторов на нее влияющих. Управление рентабельностью на предприятии. Анализ рентабельности ОАО «Строитель 43». Краткая характеристика ОАО «Строитель 43». Анализ показателей рентабельности предприятия. Управление рентабельностью на предприятии. Существующая система управления рентабельностью ОАО «Строитель 43». Оценка существующей системы упра
User evelin : 13 августа 2015
30 руб.
Экзаменационная работа пл безопасности жизнедеятельности Билет №7
СибГУТИ. Билет №7. 1.Органы управления безопасностью труда, надзора и контроля за охраной труда. 2. Защитное отключение в электроустановках. Определение, назначение, схема, область применения, принцип действия. 3. Решить задачу В электрической сети (трехфазной трехпроводной, с изолированной нейтралью) напряжением 380/220 В фаза С вследствие повреждения изоляции оказалась замкнутой на корпус заземленной электроустановки, которой касается человек, а фаза В замкнулась на землю, при этом сопротивлен
User nat2744 : 24 апреля 2010
100 руб.
Школа Монтессори. История возникновения и современный этап развития
Оглавление ВВЕДЕНИЕ МАРИЯ МОНТЕССОРИ (1870-1952) РОЖДЕНИЕ ПЕДАГОГИЧЕСКОЙ СИСТЕМЫ М. МОНТЕССОРИ О СМЫСЛАХ " КОСМИЧЕСКОГО ВОСПИТАНИЯ" ДЕТЕЙ ОСНОВА ПЕДАГОГИЧЕСКОЙ СИСТЕМЫ ОРГАНИЗАЦИЯ ДЕТСКОГО ПРОСТРАНСТВА ДИДАКТИЧЕСКИЕ СРЕДСТВА РОЛЬ ПЕДАГОГА В СИСТЕМЕ МОНТЕССОРИ ПЕДАГОГИЧЕСКАЯ СИСТЕМА М.МОНТЕССОРИ В РОССИИ ЗАКЛЮЧЕНИЕ ИСТОЧНИКИ ВВЕДЕНИЕ В прошлом году педагогический мир отмечал 100-летие педагогики итальянки Марии Монтессори. Столетие именно педагогического направления, а не юбилей само
User Qiwir : 14 октября 2013
up Наверх