Форум программистов, компьютерный форум CyberForum.ru

Установить, является ли одно множество подмножеством другого - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему создаются новые объекты? http://www.cyberforum.ru/cpp-beginners/thread245016.html
Всем доброго времени суток! Я не могу понять где создаются новые объекты Есть у меня простенький класс class data { char* str; public: data(): str("Hi") {} data(char* ch): str(ch)
C++ Как нарисовать Необходимо с помощью кода нарисовать 5 квадратов, расположенные друг за другом (это будут кабинеты), а в каждом квадрате написать допустим номер кабинета или какие процедуры там проводят. Затем около каждого кабинета должен идти отсчёт времени в обратном порядке... допустим в одном кабинете 20 минут, в другом 10 минут и так далее... Может кто-нибудь знает как это реализовать. Заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread245002.html
Наследование C++
Используя механизм наследования реализовать иерархию: фигура->круг ..........->треугольник ..........->квадрат (все стрелки отходят от "фигура") У каждого класса присутствуют методы: конструкторы инициализации, ввода, вывода данных, а также методы вычисления периметра и площади соответствующей фигуры.
Написать функцию, которая удваивает каждый символ строки C++
Народ,спасайте! Не могу написать программу! Написать функцию, которая удваивает каждый символ строки. Заголовок функции: void doubleChar (char * s); Написать программу, которая принимает от пользователя набор строк (массив строк), удваивает каждый символ каждой строки и выводит преобразованные строки на экран! Пожалуйста,кто может,помогите!
C++ Шаблонная функция С++ http://www.cyberforum.ru/cpp-beginners/thread244976.html
Помогите пожалуйсто понять ошибку Используется шаблонная функция в первом вызове она отображает значение типа int во втором типа double ошибку пишет в 10 строке. Вот такую D:\C++\C++8\4\123.cpp(10) : error C2782: 't __cdecl Max5(t ,t)' : template parameter 't' is ambiguous could be 'int' or 'double' Вот код #include <iostream> using namespace std; template <class t>
C++ Тренировка Так как я только недавно стал постигать азы с++ мне трудно пока учить синтаксис и тем более все его нюансы. Поэтому я считаю, что постоянные тренировки мне необходимы. Мне нужен такой ресурс на котором есть множество задачек на разные темы - от простых (хеллоу ворлд) до сложных (на будующие). Пока таких ресурсов мною обнаружено не было и поэтому я прошу у вас помощи, если вы знаете, что либо... подробнее

Показать сообщение отдельно
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
19.02.2011, 13:46
Набросал коротенько реализацию.
Отличие от задания: нет как такового "поэлементного сравнения" при операциях над множествами.
Недоработка: функция PrintAllNumbers не печатает отрицательные значения (ну их в шахту).
Может быть косяк в MSVS и BC из-за типов данных, нет возможности проверить.
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
111
112
113
114
115
116
117
118
119
120
121
122
#ifdef _MSC_VER
  typedef __int16 int16_t;
  typedef unsigned __int16 uint16_t;
#else
  #include <stdint.h>
#endif
 
#include <ctime>
#include <cstdlib>
#include <cstdio>
#include <cstring>
 
class Set {
 public:
  typedef int16_t ValueType;
  typedef uint16_t UnsignedValueType;
  typedef unsigned char StorageType;
  Set()
    : data_size_((1 << (sizeof(ValueType) * 8)) / (sizeof(StorageType) * 8)),
      data_(new StorageType[data_size_]) {
    for (int i = 0; i < data_size_; ++i)
      data_[i] = 0;
  }
  Set(const Set &other)
    : data_size_(other.data_size_),
      data_(new StorageType[data_size_]) {
    for (size_t i = 0; i < data_size_; ++i)
      data_[i] = other.data_[i];
  }
  ~Set() {
    delete [] data_;
  }
  int Has(ValueType value) const {
    UnsignedValueType uvalue = static_cast<UnsignedValueType>(value);
    return data_[uvalue / (sizeof(StorageType) * 8)] &
           (1 << (uvalue % (sizeof(StorageType) *8 )));
  }
  void Add(ValueType value) const {
    UnsignedValueType uvalue = static_cast<UnsignedValueType>(value);
    data_[uvalue / (sizeof(StorageType) * 8)] |=
                  (1 << (uvalue % (sizeof(StorageType) * 8)));
  }
  void Remove(ValueType value) const {
    UnsignedValueType uvalue = static_cast<UnsignedValueType>(value);
    data_[uvalue / (sizeof(StorageType) * 8)] &=
                  ~(1 << (uvalue % (sizeof(StorageType) * 8)));
  }
  bool IsEmpty() const {
    for (size_t i = 0; i < data_size_; ++i)
      if (data_[i] != 0)
        return false;
    return true;
  }
  size_t DataSize() const {
    return data_size_;
  }
  Set Intersection(const Set &other) {
    Set result;
    for (int i = 0; i < data_size_; ++i)
      result.data_[i] = data_[i] & other.data_[i];
    return result;
  }
  Set Union(const Set &other) {
    Set result;
    for (int i = 0; i < data_size_; ++i)
      result.data_[i] = data_[i] | other.data_[i];
    return result;
  }
  Set Complement(const Set &other) {
    Set result;
    for (int i = 0; i < data_size_; ++i)
      result.data_[i] = data_[i] & ~other.data_[i];
    return result;
  }
  Set &operator=(const Set &other) {
    if (&other != this) {
      data_size_ = other.data_size_;
      delete [] data_;
      data_ = new StorageType[data_size_];
      for (size_t i = 0; i < data_size_; ++i)
        data_[i] = other.data_[i];
    }
    return *this;
  }
  void PrintAllNumbers() {
    for (UnsignedValueType i = 0; i <= (1 << (sizeof(ValueType) * 8) - 1); ++i)
      if (Has(i))
        printf("%d ", ValueType(i));
    printf("\n");
  }
 private:
  size_t data_size_;
  StorageType *data_;
};
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  Set a, b, c;
 
  for (int i = 0; i < 10; ++i) a.Add(rand() % 10);
  for (int i = 0; i < 10; ++i) b.Add(rand() % 10);
 
  printf("Set a: ");
  a.PrintAllNumbers();
  printf("Set b: ");
  b.PrintAllNumbers();
 
  printf("Union: ");
  a.Union(b).PrintAllNumbers();
 
  printf("Intersection: ");
  a.Intersection(b).PrintAllNumbers();
 
  printf("Symmetric difference: ");
  a.Complement(b).Union(b.Complement(a)).PrintAllNumbers();
 
  printf("Complement b in a: ");
  a.Complement(b).PrintAllNumbers();
  printf("Complement a in b: ");
  b.Complement(a).PrintAllNumbers();
  return  0;
}

Не по теме:

Посмотрим на благодарность.

 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru