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

Объединение множеств. Некорректная обработка - C++

Восстановить пароль Регистрация
 
gigder
 Аватар для gigder
3 / 3 / 0
Регистрация: 28.09.2012
Сообщений: 33
30.05.2014, 20:47     Объединение множеств. Некорректная обработка #1
Подскажите, пожалуйста, почему в 3-ий if не передается значения Set a, Set b


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
Set a; Set b; Set d; Set c;
       if(choice==1) //âûïîëГ*ГҐГ*ГЁГҐ âûáðГ*Г*Г*îé îïåðГ*öèè
                  {
                       a.Show(); 
                  }
          if(choice==2) { 
                       a.Enter(); 
                       a.Show(); 
                       int vibor=0;
                       cout<<"ГЌГ*æìèòå 1, ÷òîáû ГўГўГҐГ±ГІГЁ 2 Г¬Г*îæåñòâî"<<endl;
                       cin>>vibor;
                       if(vibor==1)
                       {
                       cout<< "Ââîä ГЁ âûâîä 2 Г¬Г*îæåñòâГ*"<<endl;
                       b.Enter();
                       b.Show();
                       }
                       getch();
                   } 
 
        if(choice==3) { 
                       cout<<"ÎáúåäèГ*ГҐГ*ГЁГҐ äâóõ Г¬Г*îæåñòâ: "<< endl;
                       d.Union(a, b);  
                       d.Show();
                       getch();  
                    } 
         if(choice==4)  
         { 
                       cout<<"Ïåðåñå÷åГ*ГЁГҐ äâóõ Г¬Г*îæåñòâ: "<< endl;
                       c.intersection(a, b);  
                       c.Show();
                       getch();

Сама фун-ия Union:

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
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;
}
Добавлено через 1 час 13 минут
Блин, помогите, пожалуйста)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2014, 20:47     Объединение множеств. Некорректная обработка
Посмотрите здесь:

Объединение множеств C++
Обработка множеств C++
C++ объединение множеств
C++ объединение, пересечение , разность, симметрическую разность множеств
C++ Объединение и упорядочивание двух множеств
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.05.2014, 21:04     Объединение множеств. Некорректная обработка #2
Цитата Сообщение от gigder Посмотреть сообщение
почему в 3-ий if не передается значения Set a, Set b
Откуда видно, что не передаётся?

Добавлено через 1 минуту
Копирующий конструктор в Set есть?
gigder
 Аватар для gigder
3 / 3 / 0
Регистрация: 28.09.2012
Сообщений: 33
31.05.2014, 18:01  [ТС]     Объединение множеств. Некорректная обработка #3
alsav22, Может и передается, только получается пустое множество. А зачем использовать копирующий конструктор? Он есть
C++
1
2
3
4
5
 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]; }
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.05.2014, 18:20     Объединение множеств. Некорректная обработка #4
Цитата Сообщение от gigder Посмотреть сообщение
Может и передается, только получается пустое множество.
Может, что передаётся, то и получается?

Добавлено через 8 минут
Цитата Сообщение от gigder Посмотреть сообщение
А зачем использовать копирующий конструктор?
Он и так используется, потому, что объекты в функцию по значению передаются.
gigder
 Аватар для gigder
3 / 3 / 0
Регистрация: 28.09.2012
Сообщений: 33
31.05.2014, 18:37  [ТС]     Объединение множеств. Некорректная обработка #5
Объясните, пожалуйста, как его использовать? Я не пойму, почему при вводе выводе все норм, а при объединении не передается ни одно множество, как надо
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.05.2014, 18:47     Объединение множеств. Некорректная обработка #6
Цитата Сообщение от gigder Посмотреть сообщение
как его использовать?
Он автоматом используется. Множества заполненные передаются в Union?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2014, 18:59     Объединение множеств. Некорректная обработка
Еще ссылки по теме:

C++ Осуществить все операции над элементами множеств: пересечение, объединение, ...
C++ Объединение множеств(массивов)
Объединение, пересечение и разность множеств с помощью оператора SWITCH C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gigder
 Аватар для gigder
3 / 3 / 0
Регистрация: 28.09.2012
Сообщений: 33
31.05.2014, 18:59  [ТС]     Объединение множеств. Некорректная обработка #7
Должны передаваться, но я посмотрел... и оказывается, что в 3-ий if они передаются пустыми
Yandex
Объявления
31.05.2014, 18:59     Объединение множеств. Некорректная обработка
Ответ Создать тему
Опции темы

Текущее время: 04:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru