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