Лабораторная работа №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
: 19 января 2014
Содержание
Введение
1. Основные направления развития приоритетного национального проекта "образование"
1.1 Общее образование
1.2 Начальное и среднее профессиональное образование
1.3 Высшее образование
2. Поддержка талантливой молодежи
3. Образование для военнослужащих
Список литературы
Введение
Тема данной курсовой работы - "Целевые программы, направленные на развитие образования в РФ". Эффективная реализация данного проекта является одним из основных направлений политики РФ в 2009 году.
Сегодн
5 руб.
Съемник стопорных колец ступиц автомобилей. Чертежи. 3D
DiKey
: 22 апреля 2023
Съемник стопорных колец.
Съемник предназначен для наиболее распространенных стопорных колец ступиц колес переднеприводных автомобилей.
1. Описание конструкции приспособления принципа его работы.
2. 3D-сборка приспособления.
3. 3D -модели деталей.
4. Сборочный чертеж приспособления.
5. Спецификация.
6. Чертежи деталей приспособления.
350 руб.
Контрольная работа по дисциплине: Устройства оптоэлектроники
ART1800
: 8 мая 2013
Задача No 1
Изобразить структуру фотоприемника. Изобразить ВАХ фото-приемника. Дать определение основным параметрам. Пояснить принцип работы фотоприемника.
Заданный тип - Лавинный фотодиод
Задача No 2
Определить длинноволновую границу фотоэффекта гр и фоточувствительность приемника. Изобразить вид спектральной характеристики фотоприемника и указать на ней гр.
Задача No3
Изобразить принципиальную схему включения семисегментного полупроводникового индикатора. Описать принцип действия индикат
150 руб.
Опора. Вариант №11а
bublegum
: 14 сентября 2021
Опора. Вариант 11а
Сложные разрезы. Упражнение 45
Перечертить два вида деталей. Выполнить указанный разрез. Проставить размеры.
чертеж и модель (все на скриншотах изображено) выполнены в компасе 3D v13, возможно открыть в 14,15,16,17,18,19 и выше версиях компаса.
Просьба по всем вопросам писать в Л/С. Отвечу и помогу.
100 руб.