• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь. Мобильный клиент для IOS находится в itunes по этой ссылке

Проблема Люди объясните почему не работает перегруз оператора пересечения

rioto

New member
12.05.2018
2
0
#1
C++:
#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;
 
class Set
{
private:
    unsigned int size;
    unsigned int* array;
public:
    Set() { size = 0; array = new unsigned int[size]; } // конструктор
 
    Set(int s) {  size = s; array = new unsigned int[size]; // конструктор с параметрами
                  for ( unsigned i = 0; i < size; i++)
                      array[i] = 0;  }
                
    Set(const Set &ob) // конструктор копии
    {   size = ob.size; 
        array = new unsigned  int[size];
        for ( unsigned int i = 0; i < size; i++)
              array[i] = ob.array[i]; }
 
    ~Set() { delete [] array; }  // деструктор
    void Enter(); // ввод
    void Show(); // ввыод
    void Union(Set, Set); // объеденение
    friend Set operator ^ (const Set &a, const Set &b); // пересечение
    void operator = (Set); // приравнение
    int operator [] (int i);
   void Raznost(Set, Set); //разность
};
void Set::Enter()
{
    std::cout << "Введите размер " << std::endl;
    std::cin >> size; 
    array = new unsigned int[size];
    for ( unsigned int i = 0; i < size; i++)
    {
        std::cout << "ВВедите элемент " << i + 1 << ")   ";
        std::cin >> array[i];
    }
} 
void Set::Show()
{
    std::cout << "Множество " << std::endl;
    for ( unsigned int i = 0; i < size; i++)
        std::cout << array[i] << " ";
    std::cout << std::endl;
} 
void Set::Union(Set a, Set b)
{
    this->size = a.size + b.size; 
    this->array = new unsigned int[size];
    unsigned i, j, count = 0;
    unsigned int n = a.size;
    for ( i = 0; i < a.size; i++)
        array[i] = a.array[i];
 
    for ( i = 0; i < b.size; i++)
    {
        for ( j = 0; j < a.size; j++)
            if(b.array[i] == a.array[j])
                continue;
            else
                count++;
        if(count == a.size)
            array[n++] = b.array[i]; 
        count = 0;
    }
    size = n;
} 
Set operator ^ (const Set &a, const Set &b)
{ 
    size = a.size + b.size;
    array = new unsigned int[size];
    unsigned int i, j, n = 0;
 
    for ( i = 0; i < a.size; i++)
        for ( j = 0; j < b.size; j++)
        {
            if(a.array[i] == b.array[j])
            {
                array[n++] = a.array[i];
                continue;
            }
        }
        size = n;
        return size;
}
void Set::Raznost(Set a, Set b)
{
    array = new unsigned int[size];
    unsigned int i, n = 0;
    for (int i = 0; i < a.size; i++)
     { int j = 0;
       while (j < b.size && b[j] != a[i]) j++;
       if (j == b.size) cout << a[i] << "\t";
     }   
     cout << "\n" << endl;
}
void Set::operator = (Set a)
{
    unsigned int i;
    delete[] this->array;
    this->size = a.size;
    this->array = new unsigned int[size];
    for ( i = 0; i < size; i++)
        array[i] = a.array[i];
}
int Set::operator[](int i)
{
    return array[i];
}
int main()
{ 
    setlocale(0, "rus"); 
    Set a;
    std::cout << "Ââîä è âûâîä 1 ìíîæåñòâà " << std::endl;
    a.Enter();
    a.Show();
    Set b = a;
    std::cout << "èíèöèàëèçàöèÿ ìíîæåñòâà 2 ñ ïîìîùüþ êîíñòðóêòîðà êîïèè "<< std::endl;
    b.Show(); 
    std::cout << "Ââîä ìíîæåñòâà 2 " << std::endl;
    b.Enter();
    Set c; 
    std::cout << "Îáúåäèíåíèå ìíîæåñòâ " << std::endl;
    c.Union(a,b);
    c.Show();
    std::cout << "пересечение" << std::endl;
   c= a^b;
    c.Show();
     std::cout << "Ðàçíîñòü a/b " << std::endl;
    c.Raznost(a,b);
     std::cout << "Ðàçíîñòü b/a " << std::endl;
    c.Raznost(b,a);
 
Вверх Снизу