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

Не работает пара функций - C++

Восстановить пароль Регистрация
 
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
04.03.2011, 00:26     Не работает пара функций #1
Задание на композицию. В программе есть класс на 100 Int элементов (множество 0 и 1), есть куча функций для работы с ними. Так вот всё работает кроме функции intersectionOfSets и UnionOfSets. У них у обоих похожий принцип так что ошибка у меня наверное взаимосвязанная.
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
# include <iostream>
# include <iomanip>
using namespace std;
 
class IntegerSet
{
public:
    IntegerSet()
    {
        for (int i=0;i<100;i++)
         a[i]=0;
    };
 
    IntegerSet(int abc[100])
    {
        for (int i=0;i<100;i++)
         a[i]=abc[i];
    }
    int a[100];//элементы множества
};
 
void UnionOfSets(IntegerSet x, IntegerSet y, IntegerSet z) //НЕ РАБОТАЕТ! объеденение множеств x и y
{
    for (int i=0;i<100;i++)
    {
        if (x.a[i] || y.a[i])
         z.a[i]=1;
    }
}
 
void InsertElement(IntegerSet x,int b) // вставка элемента в заданную позицию
{
    if ((b>=0) && (b<100))
     x.a[b]=1;
}
 
void deleteElement(IntegerSet x, int b) //удаление (установка в 0) заданного элемента
{
    if ((b>=0)&& (b<100))
     x.a[b]=0;
}
 
void intersectionOfSets(IntegerSet x, IntegerSet y, IntegerSet z) // НЕ РАБОТАЕТ! пересечение множеств x и y
{
    for (int i=0;i<100;i++)
    {
        if (x.a[i]==y.a[i])
         if (x.a[i]==1)
          z.a[i]=1;
    }
}
 
void printSet(IntegerSet x) //печать множества
{
    int flag=0;
    for (int i=0;i<100;i++)
     if (x.a[i]==1)
      flag=1;
    if (flag) // если не пустое множество то печать
     for (int j=0;j<100;j++)
     {
         cout<<x.a[j]<<" ";
         if ((j+1)%20==0)
          cout<<"\n";
     }
    else
     cout<<"---";
    cout<<"\n";
}
 
bool isEqualTo(IntegerSet x, IntegerSet y) // проверка равенства множеств
{
    for (int i=0;i<100;i++)
     if (x.a[i]==y.a[i]);
      else return 0;
    return 1;
}
 
 
int main()
{
    int n [100];
    int p [100];
    for (int i=0;i<100;i++)
    {
        n[i]=rand()%2;
        p[i]=rand()%2;
    }
    IntegerSet a1(n);
    IntegerSet a2(p);
    IntegerSet a3;
    cout<<"A1:\n";
    printSet(a1);
    cout<<"A2:\n";
    printSet(a2);
    cout<<"A3:\n";
    printSet(a3);
    cout<<"A2=A3 -"<<boolalpha<<isEqualTo(a2,a3);
    UnionOfSets(a1,a2,a3);
    cout<<"\nNow A3:\n";
    printSet(a3);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2011, 00:26     Не работает пара функций
Посмотрите здесь:

Замена функций c cout на printf() как это работает? C++
Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h C++
c++ перегрузка функций и еще пара просьб C++
Объясните, пожалуйста, как работает передача переменных при вызове функций? C++
С++ Немного графики и как связать несколько функций в одной программе?чтото намудрила.не работает C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.03.2011, 03:10     Не работает пара функций #2
объединение z.a[i] = x.a[i] | y.a[i];
пересечение z.a[i] = x.a[i] == y.a[i];

1 1 0 1
0 1 0 1
объединение 1 1 0 1
пересечение 0 1 1 1
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
04.03.2011, 09:32  [ТС]     Не работает пара функций #3
Не работают в смысле что потом при печати z оно печатается как пустое множество, не пойму почему.
Dexter
 Аватар для Dexter
284 / 144 / 16
Регистрация: 13.10.2009
Сообщений: 164
04.03.2011, 10:10     Не работает пара функций #4
C++
1
2
void UnionOfSets(IntegerSet x, IntegerSet y, IntegerSet &z)
void intersectionOfSets(IntegerSet x, IntegerSet y, IntegerSet &z)
А так должно работать
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
04.03.2011, 12:19  [ТС]     Не работает пара функций #5
DexterUa, точно! Это же копия z передавалась и редактировалась, я об этом вчера забыл.
Yandex
Объявления
04.03.2011, 12:19     Не работает пара функций
Ответ Создать тему
Опции темы

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