• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Решено Помочь с реализацией кода

  • Автор темы rioto
  • Дата начала
R

rioto

C++:
Set Set::operator * (const Set &b)
{ 
Set per;
per.size =size + b.size;
   array = new unsigned int[per];
    unsigned int i, j, n = 0;
 
    for ( i = 0; i < size; i++)
        for ( j = 0; j < b.size; j++)
        {
            if(array[i] == b.array[j])
            {
                array[n++] = a.array[i];
                continue;
            }
        }
        per = n;
        
        return n ;
Есть вот такой вот код перегрузки оператора. Что мне надо Когда заполню array , создать в per новый array размером n и туда скопировать , а array функции удалить. Помогите с программным кодом.
 
I

iFleX

омг, когда же вы научитесь гуглить свои копипасты прошлых годов, а не только дублировать темы..
Держи, вот эта твоя срань, которую выдает гугл 1й ссылкой....


C++:
#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;

class Set
{
private: // можно вынести в public 
    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); // объединение (сложение)
    void intersection(Set, Set); // пересечение
    void add(); // добавка элемента
    void extract(); // извлечение
    void operator = (Set); // перегрузки
    int operator [] (int i);
    void operator ->();
};
 
void Set::Enter()
{
    cout << "Введите размер " << std::endl;
    cin >> size;
    array = new unsigned int[size];
    for (unsigned int i = 0; i < size; i++)
    {
        cout << "Введите элемент " << i + 1 << ")   ";
        cin >> array[i];
    }
}
 
void Set::Show()
{
    cout << "Множество " << std::endl;
    for (unsigned int i = 0; i < size; i++)
        cout << array[i] << " ";
    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;
}
 
void Set::intersection(Set a, 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;
}
 
void Set::add()
{
    int a[100];
    unsigned int i;
    int element;
    for (i = 0; i < size; i++)
        a[i] = array[i];
    delete[] array;
    size = size + 1;
 
    cout << "Введите новый элемент " << std::endl;
    cin >> element;
    a[i] = element;
 
    array = new unsigned int[size];
    for (i = 0; i < size; i++)
        array[i] = a[i];
}
 
void Set::extract()
{
    unsigned int number, n, i, j;
    n = size;
    cout << "Введите номер элемента от 0 до " << size - 1 << std::endl;
    cin >> number;
 
    if (number < 0 || number > size)
        cout << "Ошибка " << std::endl;
    else
    {
        for (i = 0; i < n; i++)
        {
            if (i == number)
            {
                for (j = i; j < n - 1; j++)
                    array[j] = array[j + 1];
                n--;
            }
 
        }
        size--;
    }
}
 
void Set :: operator->()
{
}
 
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;
    cout << "Ввод и вывод 1 множества " << std::endl;
    a.Enter();
    a.Show();
 
    // ПРОБЛЕМА:
 
    unsigned int n_size;
    // как передать введённое значение size в n_size?
    unsigned int *n_array = new unsigned int[n_size];
    // как передать введённый массив array в n_array?
    for (int i = 0; i < n_size; i++)
    {
        cout << n_array[i] << " ";
    }
    cout << endl;
    Set b = a;
    cout << "Ввод множества 2 " << std::endl;
    b.Enter();
    Set c;
    cout << "Сложение множеств " << std::endl;
    c.Union(a, b);
    c.Show();
    Set d;
    d.intersection(a, b);
    cout << "Пересечение множеств" << std::endl;
    d.Show();
    cout << "Добавление элемента " << std::endl;
    d.add();
    d.Show();
    cout << "Извлечение " << std::endl;
    d.extract();
    d.Show();
    cout << endl;
    system("pause");
}
 
  • Нравится
Реакции: virtpro и Vander
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!