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

Пересечение, объединение, разность, симметрическую разность - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.72
I_like_C++
14 / 14 / 1
Регистрация: 15.03.2010
Сообщений: 126
17.03.2010, 00:13     Пересечение, объединение, разность, симметрическую разность #1
Начал изучать С++ не так давно ...и вот возникла небольшая трудность

Задание: Написать программу, которая проделывается операции над множествами (пересечение, объединение, разность, симметрическую разность)

вот собственно как то так должно быть, НО скажите как сделать чтоб ввод множеств А и Б производился с клавиатуры???

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
#include <iostream>
#include <algorithm>
using namespace std;
void show(const char *s, const int *begin, const int *end)
{
cout <<s << " ";
copy(begin, end, ostream_iterator <int> (cout," " )) ;
cout<< endl;
}
int main()
{
setlocale (LC_ALL,"Russian");
int a[4] = {2, 5, 7, 9}, b[3] = { 1 , 5, 9},
Union[7], *p_union,
isect[4], *p_isect,
dif [3], *p_dif,
symdif[7], *p_symdif;
p_isect = set_intersection(a, a + 4, b, b + 3, isect);
p_union = set_union(a, a + 4, b, b + 3, Union);
p_dif = set_difference(a, a + 4, b, b + 3, dif );
p_symdif = set_symmetric_difference(a, a + 4, b, b + 3,symdif);
show("1ое множество: ", a, a + 4);
show("2ое множество: ", b, b + 3);
show("Пересечение: ", isect, p_isect);
show("Объединение: ", Union, p_union);
show("Разность: ", dif, p_dif);
show("Симметрическая разность: ", symdif, p_symdif);
 
system("pause");
return 0;
}
Помогите плз чуть переделать код=) заранее благодарю за помощь=)

Добавлено через 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
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
#include <iostream>
#include <vector>
using namespace std;
int main()
{ 
  setlocale(0,"Russian");
  int n,k;
  vector<int> M1;
  vector<int> M2;
   cout<<"Введите число элементов в 1ом множестве: "; cin>>n;
  cout << "\nВведите первое множество состоящее из "<<n<<" неповторяющихся элементов!\n";
  for(int i=0, t; i<n; i++)
  {
      cout<<i+1<<"-й элемент множества_1: ";cin>>t;
      M1.push_back(t);
  }
  cout<<"\nВведите число элементов в 2ом множестве: "; cin>>k;
  cout << "\nВведите второе множество состоящее из "<<k<<" неповторяющихся элементов\n";
  for(int i=0, t; i<k; i++)
  {
      cout<<i+1<<"-й элемент множества_2: ";cin>>t;
      M2.push_back(t);
  }
  cout<<"\n\n1ое множество: A= {";
  for(int i=0; i<n; i++)
                {
                    if (i==n-1) 
                    {
                        cout<<M1[i]<<"}"<<endl; break;
                    }
                    cout<<M1[i]<<" , ";
                }
                                
                cout<<"2ое множество: B= {";
  for(int i=0; i<k; i++)
                {
                    if (i==k-1) 
                    {
                        cout<<M2[i]<<"}"<<endl; break;
                    }
                    cout<<M2[i]<<" , ";
                    }
                
                cout<<"\nДекартово (прямое) произведение множеств:\nAxB= { ";
                  
  for (int i=0;i<n;i++)
  {
      for (int j=0;j<k; j++)
      {
          if ((i==n-1)&&(j==k-1))
          {
              cout<<"("<<M1[i]<<","<<M2[j]<<")";break;
          }
             cout<<"("<<M1[i]<<","<<M2[j]<<"), ";
      }
  }     
  cout<<" }\n"<<endl;                                 
system("pause");
return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2010, 00:13     Пересечение, объединение, разность, симметрическую разность
Посмотрите здесь:

C++ Вычислить сумму и разность массивов одного размера
C++ Найти пересечение, объединение, разность, симметрическую разность множеств
Реализовать классические операции над множествами - объединение, пересечение и симметричная разность C++
C++ Заданы два множества точек на плоскости. Построить пересечение и разность этих множеств. Дописать программу
Работа с множествами: объединение, пересечение, симметрическая разность C++
C++ Действия над массивами (объединение, разность)
C++ Объединение, пересечение, разность множеств
C++ Найти симметрическую разность множеств

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
17.03.2010, 05:39     Пересечение, объединение, разность, симметрическую разность #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от I_like_C++ Посмотреть сообщение
НО скажите как сделать чтоб ввод множеств А и Б производился с клавиатуры???
Ну как то так

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
#include <iostream>
#include <algorithm>
using namespace std;
void show(const char *s, const int *begin, const int *end)
{
cout <<s << " ";
copy(begin, end, ostream_iterator <int> (cout," " )) ;
cout<< endl;
}
int main()
{
setlocale (LC_ALL,"Russian");
int a[4] , b[3];
 
for(int i=0;i<4;i++)
cin >> a[i];
 
for(int i=0;i<3;i++)
cin >> b[i];
 
int Union[7], *p_union,
isect[4], *p_isect,
dif [3], *p_dif,
symdif[7], *p_symdif;
p_isect = set_intersection(a, a + 4, b, b + 3, isect);
p_union = set_union(a, a + 4, b, b + 3, Union);
p_dif = set_difference(a, a + 4, b, b + 3, dif );
p_symdif = set_symmetric_difference(a, a + 4, b, b + 3,symdif);
show("1ое множество: ", a, a + 4);
show("2ое множество: ", b, b + 3);
show("Пересечение: ", isect, p_isect);
show("Объединение: ", Union, p_union);
show("Разность: ", dif, p_dif);
show("Симметрическая разность: ", symdif, p_symdif);
 
system("pause");
return 0;
}

Не по теме:

Хотя учитывая использование STL, вопрос о вводе массива с клавы выглядит несколько странно

I_like_C++
14 / 14 / 1
Регистрация: 15.03.2010
Сообщений: 126
17.03.2010, 07:40  [ТС]     Пересечение, объединение, разность, симметрическую разность #3
Хотя учитывая использование STL, вопрос о вводе массива с клавы выглядит несколько странно
почему?
кстати, раз уж ты упамянул STL...вот эти шаблоны: set_intersection, set_union, set_difference,
set_symmetric_difference будут также работать, например для векторов? если я, например, захочу задать еще и размер массива, можно так написать?

чтоб вот из этого кода size1 && size2 я задавал сам=/
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
#include <iostream>
#include <algorithm>
using namespace std;
void show(const char *s, const int *begin, const int *end)
{
cout <<s << " ";
copy(begin, end, ostream_iterator <int> (cout," " )) ;
cout<< endl;
}
int main()
{
setlocale (LC_ALL,"Russian");
int const size1=4;
int const size2=3;
int a[size1] , b[size2];
 
for(int i=0;i<size1;i++)
{
    cout<<i+1<<"-ы элемент  множества А: ";cin >> a[i];
}
 cout<<endl;
for(int i=0;i<size2;i++)
{
    cout<<i+1<<"-ы элемент  множества B: ";cin >> b[i];
}
 
int Union[size1+size2], *p_union,isect[size1+size2], *p_isect,dif [size1+size2], *p_dif,symdif[size1+size2], *p_symdif;
p_isect = set_intersection(a, a + size1, b, b + size2, isect);
p_union = set_union(a, a + size1, b, b + size2, Union);
p_dif = set_difference(a, a + size1, b, b + size2, dif );
p_symdif = set_symmetric_difference(a, a + size1, b, b + size2,symdif);
show("A: ", a, a + size1);
show("B: ", b, b + size2);
show("Пересечение: ", isect, p_isect);
show("Объединение: ", Union, p_union);
show("Разность: ", dif, p_dif);
show("Симметрическая разность: ", symdif, p_symdif);
 
system("pause");
return 0;
}
вот чтоб как для векторов
C++
1
2
3
4
5
6
7
8
9
#include <veckor>
....
vector<int> a;
cout<<"vvedite N:";cin>>N;
for(int i=0,t;i<N;i++)
{
cin>>t;
a.push_back[t];
}
И вот я еще читал что есть библиотека <set> как раз, вроде, для множеств и там эти же операции можно проделать, написав символьно A*B-пересечение, A\B-разность, A+B-объединение
C++
1
2
3
...
p_union=(A+sizeA, B+sizeB, A+B)
...
может кто пару примеров приведет как использовать <set>, как хотя б туда числа ввести=)) простонько
I_like_C++
14 / 14 / 1
Регистрация: 15.03.2010
Сообщений: 126
18.03.2010, 16:47  [ТС]     Пересечение, объединение, разность, симметрическую разность #4
ап! ответьте плз
Dimonchikk
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 5
14.06.2013, 12:54     Пересечение, объединение, разность, симметрическую разность #5
vet, Здравствуй ! помоги мне сделать задачу ПРограмная реализация задач на множествах ! и блок схему! я в темах видел ты помогал там на такую тему ! или хотя бы блок схему на ту ! пожалуйста! за мной не постоит !
Yandex
Объявления
14.06.2013, 12:54     Пересечение, объединение, разность, симметрическую разность
Ответ Создать тему
Опции темы

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