Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 17

Класс "Множество символов"

08.12.2011, 12:43. Показов 4066. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Внимание! В каждом задании требуется разработать пользовательский тип (класс). Для демонстрации возможностей класса Вам необходимо написать программу, управляемую через меню (в текстовом режиме). Исходный код класса нужно оформить в виде двух файлов: заголовочного файла с объявлением класса и файла реализации.


Разработайте пользовательский тип «множество символов». Реализуйте механизм подсчета ссылок (!) для минимизации операций копирования. Для разрабатываемого типа обязательно определите:
• конструктор и деструктор;
• конструктор копирования;
• операторы << и >> для добавления и исключения элементов из множества;
• операторы & и | для пары множеств с семантикой «пересечение множеств» и «объединение множеств»;
• оператор присваивания;
• оператор сравнения ==;
• операторы < и > c семантикой принадлежности одного множества другому;
• метод для определения принадлежности символа множеству;
• метод для вывода множества в указанный поток.

Добавлено через 22 часа 3 минуты
Не могли бы вы написать код?)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2011, 12:43
Ответы с готовыми решениями:

Разработать класс «Множество (целых чисел, символов, строк и т. д.)» – Set мощности n
Разработать класс «Множество (целых чисел, символов, строк и т. д.)» – Set мощности n. Написать несколько конструкторов, в том числе...

Создать множество, которое состоит из символов, не входящих во множество символов вашего имени
Пожалуйста помогите составить программу,на тему множества. Из множества латинских букв создать множество, которое состоит из символов,...

Создать множество М1 парных символов и множество М2 непарных символов входящего ряда
Реализирвоать задачу так : Множество использовать двумя способами, в виде процедуры и с помощью функции.В программе должно быть описание...

1
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
09.12.2011, 14:32
Лучший ответ Сообщение было отмечено Dima7147 как решение

Решение

Внимание! Имел я в виду "писать программу, управляемую через меню (в текстовом режиме)" и оформление "в виде двух файлов: заголовочного файла с объявлением класса и файла реализации".

Так же не ясно, что такое "подсчет ссылок" еще и для "минимизации копирования". Имеется в виду количество инстанцированных классов?

Вот класс и пример его работы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <string>
#include <iostream>
 
class SetOfChar {
 public:
  SetOfChar() {
    clear();
  }
  SetOfChar(const SetOfChar &other) {
    copyFrom(other);
  }
  SetOfChar &operator=(const SetOfChar &other) {
    if (&other != this)
      copyFrom(other);
    return *this;
  }
  SetOfChar &operator<<(unsigned char value) {
    data_[value / 8] |= 1 << (value % 8);
    return *this;
  }
  SetOfChar &operator>>(unsigned char value) {
    data_[value / 8] &= ~(1 << (value % 8));
    return *this;
  }
  bool operator[](unsigned char value) const {
    return has(value);
  }
  SetOfChar operator&(const SetOfChar &other) {
    return intercectionWith(other);
  }
  SetOfChar operator|(const SetOfChar &other) {
    return unionWith(other);
  }
  bool operator<(const SetOfChar &other) {
    return isSubsetOf(other);
  }
  bool operator>(const SetOfChar &other) {
    return other.isSubsetOf(*this);
  }
  SetOfChar intercectionWith(const SetOfChar &other) const {
    SetOfChar result;
    for (unsigned char i = 0; i < 32; ++i)
      result.data_[i] = data_[i] & other.data_[i];
    return result;
  }
  SetOfChar unionWith(const SetOfChar &other) const {
    SetOfChar result;
    for (unsigned char i = 0; i < 32; ++i)
      result.data_[i] = data_[i] | other.data_[i];
    return result;
  }
  bool isSubsetOf(const SetOfChar &other) const {
    for (unsigned char i = 0; i < 32; ++i)
      if (((data_[i] & other.data_[i]) ^ data_[i]) != 0)
        return false;
    return true;
  }
  bool operator==(const SetOfChar &other) const {
    return equalsTo(other);
  }
  bool equalsTo(const SetOfChar &other) const {
    for (unsigned char i = 0; i < 32; ++i)
      if (data_[i] != other.data_[i])
        return false;
    return true;
  }
  bool has(unsigned char value) const {
    return ((data_[value / 8] & (1 << (value % 8))) != 0);
  }
  bool isEmpty() const {
    for (size_t i = 0; i < 32; ++i)
      if (data_[i] != 0)
        return false;
    return true;
  }
  void clear() {
    for (size_t i = 0; i < 32; ++i)
      data_[i] = 0;
  }
  void copyFrom(const SetOfChar &other) {
    for (size_t i = 0; i < 32; ++i)
      data_[i] = other.data_[i];
  }
 private:
  unsigned char data_[32];
};
 
std::ostream &operator<<(std::ostream &stream, const SetOfChar &set) {
  for (unsigned char i = 0; i < 255; ++i)
    if (set[i])
      stream << static_cast<int>(i) << " ";
  return stream;
}
 
int main(int argc, char *argv[]) {
  SetOfChar a, b, c;
  a << 1 << 2 << 4 << 6;
  b << 2 << 3 << 5 << 6;
  c = (a | b);
 
  std::cout << "a: " << a << std::endl << "b: " << b << std::endl <<
    "c: " << c << std::endl;
  std::cout << "Union: " << (a | b) << std::endl;
  std::cout << "Intersection: " << (a & b) << std::endl;
  std::cout << "C includes A: " << ((c > a) ? "yes" : "no") << std::endl;
  std::cout << "C includes B: " << ((c > b) ? "yes" : "no") << std::endl;
  std::cout << "A includes B: " << ((a > b) ? "yes" : "no") << std::endl;
  std::cout << "A equals to B: " << ((a == b) ? "yes" : "no") << std::endl;
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2011, 14:32
Помогаю со студенческими работами здесь

Создать класс mySet, реализующий множество символов. Реализовать операции работы с ним
+, -, *. Операндами этих операций могут выступать как сами множества, так и символы (char): mySet operator+(mySet&amp; a); mySet...

Создать класс «множество символов». Перегрузить операции: << (вывод элементов множества в алфавитном порядке)
Создать класс «множество символов». Перегрузить операции: &lt;&lt; (вывод элементов множества в алфавитном порядке), == (проверка на равенство...

Разработать класс "Множество символов"
Помогите разобраться с написанием кода!!!!!!!! Разработать класс для представления объекта множество символов-*. Определить конструктор с...

Разработать класс "Множество символов"
разработать класс множество символов - set мощности n. написать несколько конструкторов, в том числе конструктор копирования. Перегрузить...

Вычислить факт присутствия в тексте символов, не вхдящих в заданное множество символов
Составить программу, которая присваивает некоторой переменной значение &quot;истина&quot;, если во введенном тексте содержатся символы отличные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru