Форум программистов, компьютерный форум, киберфорум
Наши страницы

Ошбика в алгоритме нахождения разности множеств - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Решил, уйти от Delphi в С++ http://www.cyberforum.ru/cpp-beginners/thread663445.html
Долго метался куда стучать, решил сюда. В общем проблема: занимаюсь Delphi, хотя как сказать занимаюсь - паузу себе 2х месячную сделал, и вот сел как-то на днях попрогить, тут будто осенило - а...
C++ Структуры. Ввод значения поля Проблема: при заполнении полей пишет переменная не инициализирована. Т.е. если я в коде инициализирую, то считает. А когда делаешь запрос на ввод вылетает. Подскажите пожалуйста. Вот код: #include... http://www.cyberforum.ru/cpp-beginners/thread663427.html
Где то ошибка C++
Помогите вот текст программы не могу разобраться что да как. Все вроде правильно. #include <stdio.h> #include <iostream> #include <math.h> void main() { double h,a,b,S,i; int z; printf("...
C++ Определить, какие слова из текста имеют длину от 1 до 10, и вывести их в порядке возрастания длины
Определить сколько слов текста имеют длину 1, 2, 3, ... 10 символов. Вывести эти слова в последовательности возрастания их длины.
C++ Borland C++ и запрет интерфейса за клавиатрой http://www.cyberforum.ru/cpp-beginners/thread663419.html
нужно запретить а потом разрешыть интерфейс за клавиатурой.....так звучит задание...... как я понял нужно перевести линию синхронизации в нулевое состояние и этим самим запретить передачу данних от...
C++ Подсчёт суммы отрицательных чисел Создайте программу, которая считает сумму отрицательных чисел, которая ввелась. Помогите пожалуйста??? подробнее

Показать сообщение отдельно
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183

Ошбика в алгоритме нахождения разности множеств - C++

04.10.2012, 15:30. Просмотров 977. Ответов 5
Метки (Все метки)

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
Set& Set::operator-(const Set &set)
{
    Set *raznost = new Set;
    if (this->size != 0 && set.size != 0)
    {
        for (int i = 0; i < this->size; i++)
        {
            for (int j = 0; j < set.size; j++)
            {
                if (this->data[i] == set.data[j])
                {
                    break;
                }
            }
            raznost->data[raznost->size] = this->data[i];
            ++(raznost->size);
        }
    }
    else {
        raznost->size = 0;
        return *raznost;
    }
    return *raznost;
}
В общем в чём проблема:
в два множества(это объекты) введены элементы:
sets[2].add('k'); sets[3].add('x');
sets[2].add('y'); sets[3].add('z');
sets[2].add('h'); sets[3].add('h');
На выходе должен быть результат разности sets[2] - sets[3] равен {k,y}
А получаю {k,y,h}.
Оператор - для объектов перегружен.
В принципе я знаю ошибку, если всё на бумаге или в уме раскидать, то результат правильный выдан, то есть ошибка семантическая.
Но как её решить, не могу я понять
Кучу вариантов перепробовал,везде всё возвращается к этому же результату.

Добавлено через 3 минуты
Так же я менял местами код делая вот так:
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
Set& Set::operator-(const Set &set)
{
    Set *raznost = new Set;
    if (this->size != 0 && set.size != 0)
    {
        for (int i = 0; i < this->size; i++)
        {
            for (int j = 0; j < set.size; j++)
            {
                if (this->data[i] == set.data[j])
                {
                    break;
                }
                else
                {
                    raznost->data[raznost->size] = this->data[i];
                    ++(raznost->size);
                }
            }
        }
    }
    else {
        raznost->size = 0;
        return *raznost;
    }
    return *raznost;
}
Но это тожже не верно, потому что каждый элемент из первого множества сравниваеться с каждым из второго множества, и в итоге получаем {k,k,k,y,y,y,h,h}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.