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

Нюанс в работе с классом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ подключение MSXML в MSVC2010 http://www.cyberforum.ru/cpp-beginners/thread783574.html
всем привет помогите пожалуйста подключаю MSXML6 в проект для C++ VC2010 делаю все как в руководстве http://msdn.microsoft.com/en-us/library/windows/desktop/ms766387(v=vs.85).aspx но ничего не собирается
C++ Написать функцию, которая вычисляет объем и площадь поверхности параллелепипеда, описать функцию IsSquare(K) Здравствуйте, нужна помощь по решению двух зачад в TC++(Turbo C++); Задача 1. Написать функцию, которая вычисляет объем и площадь поверхности параллелепипеда. Задача 2. Описать функцию IsSquare(K) логического типа, возвращающую True, если целый параметр K(>0) является квадратом некоторого целого числа, и False в противном случае. С ее помощью найти количество квадратов в наборе из 10 целых... http://www.cyberforum.ru/cpp-beginners/thread783566.html
Найти количество нечетных элементов C++
Данная последовательность целых чисел, за которой следует 0. Найти количество нечетных элементов этой последовательности.( нужно написать цыклом)
C++ Написать программу которая определяет сумму в строке квадратной матрицы
Написать программу, которая предлагает пользователю ввели элементы матрицы размером 3х3, а затем определяет номер строки квадратной матрицы, сумма элементов которой максимальна. Введите 3 строки по 3 элемента матрицы через пробел. После ввода элементов строки нажимайте <Enter> 2 9 4 7 5 3 6 2 8 Максимальная сумма элементов в 3 строке = 16.
C++ Написать программу которая выводит на экран график http://www.cyberforum.ru/cpp-beginners/thread783541.html
Напишите программу, которая выводит на экран следующий график: * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
C++ С++ Программа на Одномерный массив (определить самого высокого мужчину и женщину) Дано 9 имен. Массивы пол(муж, жен) и рост(150-200). С помощью массивов пол и рост определить самого высокого мужчину и женщину, а также средний рост мужчин и женщин. Помогите советами :wall:. подробнее

Показать сообщение отдельно
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
26.02.2013, 00:52  [ТС]     Нюанс в работе с классом
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
typedef __int16 int16_t;
typedef unsigned __int16 uint16_t;
 
#include <iostream>
#include <string>
 
using namespace std;
 
class Set {
public:
    typedef int16_t ValueType;
    typedef uint16_t UnsignedValueType;
    typedef unsigned int 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() {
        //cout<<"Деструктор\n";
        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;
    }
 
    void check() {
        int prov;
        cout<<"Введите число для проверки\n";
        cin>>prov;
        for (UnsignedValueType i = 0; i <= (1 << (sizeof(ValueType) * 8) - 1); ++i){
            
            if (ValueType(i)=prov){
                cout<<"Пренадлежит\n";
                break;
            }
            else cout<<"Не пренадлежит\n";
            break;
        }
    }
 
    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))
                cout<<" "<<ValueType(i);
        cout<<endl;
    }
private:
    size_t data_size_;
    StorageType *data_;
};
 
int main() {
    setlocale(0,"");
    do{
        system("CLS");
    Set a, b, c;
    int n;
    cout<<"Введите рамерность множеств\n";
    cin>>n;
    for (int i = 0; i < n; ++i) a.Add(rand() % 10);
    for (int i = 0; i < n; ++i) b.Add(rand() % 10);
 
    cout<<"Сгенерированное множество a: ";
    a.PrintAllNumbers();
    cout<<"Сгенерированное множество b: ";
    b.PrintAllNumbers();
 
    cout<<("Объединение : ");
    a.Union(b).PrintAllNumbers();
 
    cout<<"Пересечиние: ";
    a.Intersection(b).PrintAllNumbers();
 
    cout<<"Разность: ";
    a.Complement(b).Union(b.Complement(a)).PrintAllNumbers();
 
    cout<<"Проверка на пренадлежность \n";
    cout<<"Для множества a \n";
    a.check();
    cout<<"Для множества b \n";
    b.check();
    
    system("pause");
    }while(true);
    return  0;
}
можете помочь отладить функциюю check потому что он единственная которая не работает,точнее она работает но не корректно ,почему то всё ей подходит
 
Текущее время: 06:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru