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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

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

04.03.2011, 00:26. Просмотров 453. Ответов 4
Метки нет (Все метки)

Задание на композицию. В программе есть класс на 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);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2011, 00:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает пара функций (C++):

c++ перегрузка функций и еще пара просьб - C++
Доброй ночи! вот имеется код с классом объектом которого является комплексное число. класс нужно дополнить динамическим массивом,...

Не работает одна из функций - C++
Всем доброго времени суток. Суть задания - найти обратную матрицу методом Гаусса. Проблема в том, что нужной функции, где идет работа с...

некорректно работает одна из функций класса - C++
Здарова, в общем, пишу я тут класс для представления треугольника, в числе прочих этот класс должен уметь вычислять периметр по трем...

Двусвязный список(не работает одна из функций) - C++
Прошу помощи с функцией удаления минимума из списка, ели просматривать список справа налево. Аналогичная функция удаления максимума...

Перегрузка функций и операторов, почему программа не работает? - C++
Помогите пожалуйста разобраться почему не работает программа? Создать класс 2-D координат. Определить операторы &quot;+&quot; и &quot;-&quot; как...

Замена функций c cout на printf() как это работает? - C++
Здрасвуйте помогите пожалуйсто вообще не догнал как работает вот эта функиция scanf() c cout на printf() как заменить понял а вот с...

4
accept
4825 / 3246 / 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
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
04.03.2011, 09:32  [ТС] #3
Не работают в смысле что потом при печати z оно печатается как пустое множество, не пойму почему.
0
Dexter
285 / 145 / 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)
А так должно работать
1
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
04.03.2011, 12:19  [ТС] #5
DexterUa, точно! Это же копия z передавалась и редактировалась, я об этом вчера забыл.
0
04.03.2011, 12:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2011, 12:19
Привет! Вот еще темы с ответами:

Не работает перегрузка функций для инициализации квадратной матрицы - C++
Написать перегруженные функции (int, double, char) для выполнения следующих задач: - Инициализация квадратной матрицы; Своими силами...

Программа из книги, в которой осуществляется вызов двух функций не работает - C++
Может кто поможет, не работает программа с книги &quot;Моя первая программа на С/С++&quot; А.Нейбауэр (Листинг 7.1. Программа, в которой...

Объясните, пожалуйста, как работает передача переменных при вызове функций? - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void z(int *a,int lenght){ int *p; for...

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h - C++
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru