Лабораторная работа №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 руб.
Лабораторная работа №3. Абстрактный тип данных (ADT) p - ичное число
Nik001
: 2 ноября 2021
Цель работы: Сформировать практические навыки реализации
абстрактных типов данных в соответствии с заданной спецификацией
с помощью классов С++.
Задание:
• Реализовать абстрактный тип данных «р-ичное число»,
используя класс С++, в соответствии с приведенной ниже
спецификацией.
• Протестировать каждую операцию, определенную на типе данных,
используя средства модульного тестирования.
• Если необходимо, предусмотрите возбуждение исключительных
ситуаций.
Спецификация типа данных «р-ичное числ
250 руб.
Другие работы
ММА/ИДО Иностранный язык в профессиональной сфере (ЛТМ) Тест 20 из 20 баллов 2024 год
mosintacd
: 28 июня 2024
ММА/ИДО Иностранный язык в профессиональной сфере (ЛТМ) Тест 20 из 20 баллов 2024 год
Московская международная академия Институт дистанционного образования Тест оценка ОТЛИЧНО
2024 год
Ответы на 20 вопросов
Результат – 100 баллов
С вопросами вы можете ознакомиться до покупки
ВОПРОСЫ:
1. We have … to an agreement
2. Our senses are … a great role in non-verbal communication
3. Saving time at business communication leads to … results in work
4. Conducting negotiations with foreigners we shoul
150 руб.
Задание №2. Методы управления образовательными учреждениями
studypro
: 13 октября 2016
Практическое задание 2
Задание 1. Опишите по одному примеру использования каждого из методов управления в Вашей профессиональной деятельности.
Задание 2. Приняв на работу нового сотрудника, Вы надеялись на более эффективную работу, но в результате разочарованы, так как он не соответствует одному из важнейших качеств менеджера - самодисциплине. Он не обязателен, не собран, не умеет отказывать и т.д.. Но, тем не менее, он отличный профессионал в своей деятельности. Какими методами управления Вы во
200 руб.
Особенности бюджетного финансирования
Aronitue9
: 24 августа 2012
Содержание:
Введение
Теоретические основы бюджетного финансирования
Понятие и сущность бюджетного финансирования
Характеристика основных форм бюджетного финансирования
Анализ бюджетного финансирования образования
Понятие и источники бюджетного финансирования образования
Проблемы бюджетного финансирования образования
Основные направления совершенствования бюджетного финансирования образования
Заключение
Список использованный литературы
Цель курсовой работы – исследовать особенности бюджетного фин
20 руб.
Программирование (часть 1-я). Зачёт. Билет №2
sibsutisru
: 3 сентября 2021
ЗАЧЕТ по дисциплине “Программирование (часть 1)”
Билет 2
Определить значение переменной y после работы следующего фрагмента программы:
a = 3; b = 2 * a – 10; x = 0; y = 2 * b + a;
if ( b > y ) or ( 2 * b < y + a ) ) then begin x = b – y; y = x + 4 end;
if ( a + b < 0 ) and ( y + x > 2 ) ) then begin x = x + y; y = x – 2 end;
200 руб.