Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8743
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 3059
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2591
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / C/C++

Номер выпуска:1702
Дата выхода:01.12.2011, 23:30
Администратор рассылки:Киселёва Алёна aka Verena (Профессор)
Подписчиков / экспертов:282 / 164
Вопросов / ответов:1 / 1

Консультация # 184531: Здравствуйте! Требуется написать программу из области объектно-ориентированного программирования на С++. Среда - Visual Studio, код прокомментировать. 1. Разработать класс "множество символов" в соответствии со следующим заданием: Состояние класса - Множество состоит из элементов типа char (в множестве не может быть двух э...


Консультация # 184531:

Здравствуйте!
Требуется написать программу из области объектно-ориентированного программирования на С++. Среда - Visual Studio, код прокомментировать.

1. Разработать класс "множество символов" в соответствии со следующим заданием:
Состояние класса -
Множество состоит из элементов типа char (в множестве не может быть двух элементов с одинаковыми значениями) и определяется мощностью (количеством элементов в множестве) и значениями своих элементов, например: множество из 6 элементов - строка abcdef. Память под множество выделяется статически, во время компиляции, и задается массивом фиксированного предельного значения (например, максимальная мощность множества 100 элементов).
Протокол класса -
Определяет возможности создания и инициализации экземпляров класса и правила использования их (методы класса).
Предусмотреть следующие возможности:
∙ пустой конструктор для инициализации экземпляров и массивов экземпляров класса по умолчанию;∙ создание экземпляров класса с инициализацией мощностью множества (начальное множество - символы, начиная с символа пробел);
∙ создание экземпляров класса с инициализацией значениями элементов множества как строки символов;
∙ ввод экземпляров класса из входного потока и вывод их значений в выходной поток
(с помощью перегруженных операторов >> и << );
∙ объединение двух множеств (с помощью перегруженного оператора сложения +; результирующее множество должно содержать элементы множества 1 и отличающиеся элементы множества 2);
∙ добавление нового элемента в множество (с помощью перегруженного оператора += );
∙ вычисление пересечения двух множеств (с помощью перегруженного оператора умножения *; результирующее множество должно состоять из элементов, имеющихся и в множестве 1, и в множестве 2);
∙ вычисление разности двух множеств (с помощью перегруженного оператора вычитания -; результирующее множество должно состоять из элементов первого множ ества без тех, которые есть во втором множестве);
∙ определение, имеется ли некоторый заданный элемент в множестве.
2. Проектирование класса рекомендуется начать с представления состояния класса, учитывающего заданные операции, а затем реализации конструкторов и перегруженного оператора вывода. Для отладки и исчерпывающего тестирования других методов разработанного класса реализовать диалоговую программу, которая позволяет вводить параметры, отлаживаемых методов.
4. Написать прикладную программу, использующую разработанный класс.

Дата отправки: 23.11.2011, 15:33
Вопрос задал: Посетитель - 383089 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Киселёва Алёна aka Verena (Профессор):

Здравствуйте, Посетитель - 383089!

Вот вариант решения Вашей задачи. Символы хранятся в статическом массиве, максимальная длина массива ограничена статической константой. Реальная длина множества на каждый момент времени определяется полем power.
Недопустимость повторных символов в множестве учитывается на этапах добавления и инициализации.
Операторы +, - и * реализованы как дружественные функции, как и операторы ввода-вывода.
Дополнительно для удобства добавила оператор присваивания и конструктор копирования.

Работу класса можно проверить на таком примере:

Код :
#include "Set.h"
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
	Set s1 ("01234567");
	Set s2;
	for (char i='5'; i<='9'; i++)
		s2+=i;
	cout << "\ns1:\n" << s1;
	cout << "\ns2:\n" << s2;
	cout << "\ns1+s2:\n" << s1+s2;
	cout << "\ns1-s2:\n" << s1-s2;
	cout << "\ns1*s2:\n" << s1*s2;
	_getch();
	return 0;
}


Если Вам нужна какая-то более конкретная программа, использующая данный класс, пишите.
Проверено в VS 2010. Код в приложении и в приложенном архиве, из комментариев должно быть всё понятно.

Удачи!

Приложение:

Консультировал: Киселёва Алёна aka Verena (Профессор)
Дата отправки: 28.11.2011, 12:22
Прикреплённый файл: посмотреть » [2.0 кб]
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное