Лабораторная работа №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 руб.
Другие работы
Схема технолгическа газо распределительной станции-Чертеж-Оборудование транспорта нефти и газа-Курсовая работа-Дипломная работа
https://vk.com/aleksey.nakonechnyy27
: 15 мая 2016
Схема технолгическа газо распределительной станции-(Формат Компас-CDW, Autocad-DWG, Adobe-PDF, Picture-Jpeg)-Чертеж-Оборудование транспорта нефти и газа-Курсовая работа-Дипломная работа
400 руб.
Организация управления налогообложением в условиях рынка (на примере ГНИ Октябрьского района г. Орска)
evelin
: 22 октября 2013
Содержание
Введение........................................................................................................... 4
Глава 1. Система изъятия налогов РФ на современном этапе экономического развития 6
1.1. Государственная налоговая политика.................................................. 6
1.2. Современная налоговая система РФ................................................... 14
1.3. Виды налогов взимаемые Октябрьским ГНИ с юридических лиц города Орска. 20
Глава 2. Анализ
5 руб.
Схемотехника телекоммуникационных устройств. Вариант 05
Romansuba
: 30 января 2020
Необходимо выбрать тип усилительных элементов и режим работы, рассчитать принципиальную схему по исходным данным, представленным в таблицах 1 и 2. Принципиальная схема группового усилителя приведена на рисунке 4.1 в методических указаниях к курсовому проекту.
Исходные данные
Количество каналов, тч 65
Максимальная температура грунта 33
Уровень передачи УП, дБ 12,1
Требуемое затухание нелинейности АГ0 2, дБ 67
АГ0 3, дБ 72
Питание усилителя, В 23
Допустимый коэффициент частотных искажений
на ни
400 руб.
Проектирование легкового автомобиля полной массой 1500 кг с подробной разработкой шестиступенчатой коробки передач
Рики-Тики-Та
: 27 апреля 2018
Зміст
1 Технічне завдання
1.1 Технічні вимоги
1.1.1 Основні параметри і розміри автомобіля
1.1.2 Вимоги щодо живучості та стійкості до зовнішніх впливів
1.1.3 Вимоги щодо надійності
1.1.4 Вимоги по ергономіці, населеність та технічної естетики
1.1.5 Вимоги по зручності технічного обслуговування, ремонту і зберігання
1.1.6 Вимоги по евакопрігодності і евакоспособності
1.1.7 Вимоги з безпеки
1.1.8 Вимоги по транспортуванню і зберіганню
1.2 Конструктивні вимоги
1.2.1 Загальні вимоги
1.2.2 Ви
825 руб.