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

Перегрузка опреатора на С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ с рисунком для интеллектуалов кто знает как решит задачу на си?? http://www.cyberforum.ru/cpp-beginners/thread233114.html
Найдите в этом лабиринте такой маршрут, чтобы сумма всех "собранных " на перекрестках чисел равнялась 40. Через каждый перекресток можно проходить только один раз.
C++ Удалить из файла все цифры, если они следуют после знаков препинания. Дан файл, содержащий символы. Удалить из файла все цифры, если они следуют после знаков препинания. (программа на С) http://www.cyberforum.ru/cpp-beginners/thread233113.html
C++ Работа с функциями
Помогите решить задачи пожалуйста 1) По введенному целому числу М распечатать все трехзначные десятичные числа, сумма цифр равна М. (Описать функцию вычисления суммы цифр числа). 2) Описать функцию формирования элементов одномерного массива с помощью генератора случайных чисел и определения суммы элементов, принадлежащее заданному диапазону.
коллизии C++
алгоритм разрешения коллизии с помощью косвенной адресации я так думаю, что замешана хеширование. но мало что понимаю. Как его написать (примерно), подскажите пожалуйста.
C++ Как проверить выходит ли цикл за размер массива http://www.cyberforum.ru/cpp-beginners/thread233105.html
Давно мучает такая проблема допустим есть массив int x={0}; и цикл for(int i=0; i<11; i++){x=0;} цикл выходит за размер массива, при этом прога может как просто зависнуть так и присвоить какое то левое значение совершенно другому массиву или переменной никак не связанной с массивом X. Можно как то проанализировать код на наличие таких ошибок ? за всеми же не уследишь, а компилятор...
C++ Структуры Составить список учебной группы, включающий несколько человек. Для каждого студента указать имя, фамилию, дату рождения (год, месяц и число), оценки за сессию (3 предмета). Информацию о каждом студенте оформить в виде структуры, а совокупность структур объединить в массив. Составить программу, которая обеспечивает ввод полученной информации, ее просмотр в виде таблицы, а так же вывод информации... подробнее

Показать сообщение отдельно
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
24.01.2011, 09:15     Перегрузка опреатора на С++
almazsr, это не множество, это просто вектор (массив).
Множество двубайтных целых.
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
#include <cstdio>
#include <cstddef>
 
class Set {
 public:
  typedef short int DataType;
  typedef unsigned short int UDataType;
  Set()
    : size_((1 << (sizeof(DataType) * 8)) / 8),
      data_(new char[size_]) {
    for (size_t i = 0; i < size_; ++i)
      data_[i] = 0;
  }
  Set(const Set& other)
    : size_((1 << (sizeof(DataType) * 8)) / 8),
      data_(new char[size_]) {
    for (size_t i = 0; i < size_; ++i)
      data_[i] = other.data_[i];
  }
  ~Set() { delete [] data_; }
  size_t size() const { return size_; }
  void Add(const DataType value) {
    UDataType a_value = value;
    data_[a_value / (sizeof(*data_) * 8)] |= 1 << (a_value % (sizeof(*data_) * 8));
  }
  void Remove(const DataType value) {
    UDataType a_value = value;
    data_[a_value / (sizeof(*data_) * 8)] &= ~(1 << (a_value % (sizeof(*data_) * 8)));
  }
  bool Has(const DataType value) {
    UDataType a_value = value;
    return (data_[a_value / (sizeof(*data_) * 8)] &= 1 << (a_value % (sizeof(*data_) * 8))) != 0;
  }
  int Compare(const Set& other) const {
    for (size_t i = 0; i < size_; ++i)
      if (data_[i] != other.data_[i])
        return data_[i] - other.data_[i];
    return 0;
  }
  Set& operator+=(const DataType value) {
    Add(value);
    return *this;
  }
  Set& operator-=(const DataType value) {
    Remove(value);
    return *this;
  }
  bool operator!=(const Set &other) {
    return Compare(other) != 0;
  }
  Set& operator=(const Set& other) {
    if (this != &other) {
      for (size_t i = 0; i < size_; ++i)
        data_[i] = other.data_[i];
    }
    return *this;
  }
 private:
  size_t size_;
  char *data_;
};
 
int main(int argc, char *argv[]) {
  Set a, b;
  a += -1;
  b += -1;
  printf("a != b is %s.\n", (a != b)?"true":"false");
  a.Remove(-1);
  printf("a != b is %s.\n", (a != b)?"true":"false");
  return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru