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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.98
Жанерке
34 / 34 / 2
Регистрация: 22.09.2013
Сообщений: 170
#1

Объединение, пересечение, разность, симметрическая разность множеств - C++

06.10.2013, 22:36. Просмотров 7582. Ответов 4
Метки нет (Все метки)

Составить множество А из букв фамилии, множество В – из букв имени, множество С – из букв отчества (повторяющиеся элементы удалить). Найти: объединение множеств А, В и С, пересечение множеств А, В и С, разность А\В, разность В\А, симметрическую разность множеств А и В.
можете показать один пример с использованием множеств из букв.

Добавлено через 2 часа 21 минуту
удалила повторяющиеся элементы и сделала объединение :

помогите сделать пересечение (a*b*c) и разность (a-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
33
34
35
36
37
38
39
40
41
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include<stdio.h>
#include<math.h>
#pragma hdrstop
  void
povtor(char *str){
 char alphabet[256] = { 0 };
    char *ptr, *current;
    for(ptr = str; *ptr; ++ptr)
        if(!(alphabet[(int)*ptr]))
            alphabet[(int)*ptr] = 1;
    for(ptr = str, current = str; *ptr; ++ptr)
        if(alphabet[(int)*ptr])
        {
            *current++ = *ptr;
            alphabet[(int)*ptr] = 0;
        }
    *current = '\0';
    printf("%s\n", str);}
 
 
int main() {
char
a[]="kenjebek" ,
b[]="janerke",
c[]="kenjebekkizi" ;
char ob[1],peres_abc[1],peres_ab[1],raza_b[1],razb_a[1],simraz[1];
 int i,j,g,k;
  povtor(a);
  povtor(b);
  povtor(c);
 strcat(ob,a);
 strcat(ob,b);
 strcat(ob,c);
  povtor(ob);
 
      getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2013, 22:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объединение, пересечение, разность, симметрическая разность множеств (C++):

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

Работа с множествами: объединение, пересечение, симметрическая разность - C++
В общем нужно задать 3 множества (a,b,c) (массивы) И на выходе получить (&quot;A&quot; объединение с &quot;B&quot;) симметрическая разность этой дроби с...

Объединение, пересечение, разность множеств - C++
#include &quot;stdafx.h&quot; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;math.h&gt; ...

Объединение, пересечение и разность множеств с помощью оператора SWITCH - C++
Помогите пожалуйста написать программу объединение,пересечение и разность множеств с помощью оператора SWITCH ....ввод элементов с...

Пересечение, объединение, разность, симметрическую разность - C++
Начал изучать С++ не так давно ...и вот возникла небольшая трудность Задание: Написать программу, которая проделывается операции над...

Описать класс "множество", позволяющий выполнять основные операции - добавления и удаление элемента, пересечение, множеств, объединение и разность мно - C++
Люди помогите написать программу, очень нужно!!! Буду очень благодарный........ 1. Описать класс &quot;множество&quot;, позволяющий выполнять...

4
Alexdemath
125 / 122 / 6
Регистрация: 11.04.2010
Сообщений: 255
07.10.2013, 06:45 #2
Цитата Сообщение от Жанерке Посмотреть сообщение
Составить множество А из букв фамилии, множество В – из букв имени, множество С – из букв отчества (повторяющиеся элементы удалить). Найти: объединение множеств А, В и С, пересечение множеств А, В и С, разность А\В, разность В\А, симметрическую разность множеств А и В.
можете показать один пример с использованием множеств из букв.
Пример нахождения пересечения (повторяющиеся элементы не проходят)

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
#include <iostream>
using namespace std;
 
int main()  // Пересечение A, B и С
{
    char A[] = "kenjebek", B[] = "janerke", C[] = "kenjebekkizi";
    int size_A = 8, size_B = 7, size_C = 12, d = 0, f = 0;
    char D[12], F[12];
     
    for (int i = 0; i < size_A; i++)
     { int j = 0, k = 0;
       while (j < size_B && B[j] != A[i]) j++;
       while (k < d && D[k] != A[i]) k++;
       if (j != size_B && k == d) D[d++] = A[i];
     }
 
    for (int i = 0; i < size_C; i++)
     { int j = 0, k = 0;
       while (j < d && D[j] != C[i]) j++;
       while (k < f && F[k] != C[i]) k++;
       if (j != d && k == f){ F[f++] = C[i];  cout << C[i] << "\t"; }
     }
 
    cout << "\n" << endl;
    return 0;
}
Добавлено через 27 минут
Вот пример нахождения разности A\B (симметрическая разность A и B = (A\B) U (B\A))


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{
    char A[] = "kenjubin", B[] = "janerky";
    int size_A = 8, size_B = 7;
 
    for (int i = 0; i < size_A; i++)
     { int j = 0;
       while (j < size_B && B[j] != A[i]) j++;
       if (j == size_B) cout << A[i] << "\t";
     }
 
    cout << "\n" << endl;
    return 0;
}
1
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 443
07.10.2013, 07:14 #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
#include <set>
#include <iterator>
#include <algorithm>
#include <iostream>
 
using namespace std;
 
int main() {
    char a[] = "kenjebek",
         b[] = "janerke",
         c[] = "kenjebekkizi";
 
    set<char> sa(begin(a), prev(end(a))),
              sb(begin(b), prev(end(b))),
              sc(begin(c), prev(end(c)));
 
    set<char> abc_union;
    set_union(begin(sa), end(sa),
              begin(sb), end(sb),
              inserter(abc_union, begin(abc_union)));
    set_union(begin(abc_union), end(abc_union),
              begin(sc), end(sc),
              inserter(abc_union, begin(abc_union)));
    cout << "Union of abc: ";
    ostream_iterator<char> out(cout, "");
    copy(begin(abc_union), end(abc_union), out);
 
    set<char> abc_inter;
    set_intersection(begin(sa), end(sa),
                     begin(sb), end(sb),
                     inserter(abc_inter, begin(abc_inter)));
    set_intersection(begin(abc_inter), end(abc_inter),
                     begin(sc), end(sc),
                     inserter(abc_inter, begin(abc_inter)));
    cout << "\nIntersection of abc: ";
    copy(begin(abc_inter), end(abc_inter), out);
 
    set<char> ab_diff;
    set_difference(begin(sa), end(sa),
                   begin(sb), end(sb),
                   inserter(ab_diff, begin(ab_diff)));
    cout << "\nDifference of a and b: ";
    copy(begin(ab_diff), end(ab_diff), out);
 
    set<char> ba_diff;
    set_difference(begin(sb), end(sb),
                   begin(sa), end(sa),
                   inserter(ba_diff, begin(ba_diff)));
    cout << "\nDifference of b and a: ";
    copy(begin(ba_diff), end(ba_diff), out);
 
    set<char> ab_sym_diff;
    set_symmetric_difference(begin(sa), end(sa),
                             begin(sb), end(sb),
                             inserter(ab_sym_diff, begin(ab_sym_diff)));
    cout << "\nSymmetric difference of a and b: ";
    copy(begin(ab_sym_diff), end(ab_sym_diff), out);
}
Union of abc: abeijknrz
Intersection of abc: ejkn
Difference of a and b: b
Difference of b and a: ar
Symmetric difference of a and b: abr
1
Жанерке
34 / 34 / 2
Регистрация: 22.09.2013
Сообщений: 170
07.10.2013, 21:40  [ТС] #4
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
103
104
105
106
107
108
109
110
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include<stdio.h>
#include<math.h>
#pragma hdrstop
  void
povtor(char *str){  // удаляет повторяющиеся элементы  (правда взяла в инете )
 char alphabet[256] = { 0 };
    char *ptr, *current;
    for(ptr = str; *ptr; ++ptr)
        if(!(alphabet[(int)*ptr]))
            alphabet[(int)*ptr] = 1;
    for(ptr = str, current = str; *ptr; ++ptr)
        if(alphabet[(int)*ptr])
        {
            *current++ = *ptr;
            alphabet[(int)*ptr] = 0;
        }
    *current = '\0';
    printf("%s\n", str);}
//дальше сама додумалась 
 
int main() {
char
a[]="kenjebek" ,
b[]="janerke",
c[]="kenjebekkizi" ;
char ob[1],peres_abc[1],peres_ab[1],raza_b[1],razb_a[1],simraz[1];
 int i,j,g,k,t=0,n=0;
 cout<<"familia :  " ;
  povtor(a);
  cout<<" imia :  " ;
  povtor(b);
  cout<<"ochestvo  :  " ;
  povtor(c);
 
 
 strcat(ob,a); // объединение с помощью функции
 strcat(ob,b);
 strcat(ob,c);
 cout<<"ob'edinenie  :  " ;
  povtor(ob);
 
 
 char simbol,simbol1; // разница а-б
for(i=0;i<strlen(a);i++)
{
  simbol=a[i];
for(j=0;j<strlen(b);j++)
if(strchr(b,simbol)==0)         { 
                   raza_b[t++]=simbol;break;
                                  }
 }
cout<<"raznica a-b  :  " ;
for(k=0;k<t;k++)
cout<<raza_b[k] ;
 cout<<endl;
 
 
 
for(j=0;j<strlen(b);j++)
{  разница б-а//
  simbol1=b[j];
for(i=0;i<strlen(a);i++)
if(strchr(a,simbol1)==0) 
{
razb_a[n++]=simbol1; break;
}
}
cout<<"raznica b-a  :  " ;
for(g=0;g<n;g++)
cout<<razb_a[g] ;
 cout<<endl;
 
 
// СИММИТРИЧЕСКАЯ РАЗНОСТЬ 
 strcat(simraz,razb_a);
 strcat(simraz,raza_b);
 cout<<"simm raznica а^b :  " ;
 for(int l=1;l<=n+t+1;l++)
cout<<simraz[l] ;
 cout<<endl;
 
//пересечение а и b
 char simvol1,simvol;
 int v=0,w=0;
 for(i=0;i<strlen(a);i++){
  simvol=a[i];
for(j=0;j<strlen(b);j++)
if(strchr(b,simvol)!=0){ peres_ab[v++]=simvol;break;} }
 
// пересечение а и b и с
for(j=0;j<strlen(c);j++)
{
  simvol1=c[j];
for(int d=0;d<strlen(peres_ab);d++)
if(strchr(peres_ab,simvol1)!=0) 
{
peres_abc[w++]=simvol1; break;
}
}
cout<<"\n peresechenie  a*b*c :  " ;
for(int p=0;p<w-1;p++)
cout<<peres_abc[p] ;
 cout<<endl;
 
        getch();
    return 0;
}
Добавлено через 2 часа 44 минуты
kamre, тот код на visul C++ да:?
1
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 443
07.10.2013, 21:51 #5
Цитата Сообщение от Жанерке Посмотреть сообщение
kamre, тот код на visul C++ да:?
Почему? Любым нормальным компилятором с поддержкой с++11 должно собираться: msvc 2013, g++ 4.8.1, clang 3.3

Да и можно переписать под старый стандарт, если вместо
C++
1
begin(sa)
писать
C++
1
sa.begin()
вроде все остальное было и в старом стандарте.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2013, 21:51
Привет! Вот еще темы с ответами:

Класс множество, не работают функции объединение и разность множеств - C++
Реализован класс множество. В алгоритме не работают 2 функции, объединение и разность множеств. #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Реализовать классические операции над множествами - объединение, пересечение и симметричная разность - C++
Создать параметризованный тип данных - множество. Этот тип предназначен для хранения множества элементов и выполнения операций над ними....

Заданы два множества точек на плоскости. Построить пересечение и разность этих множеств. Дописать программу - C++
Помогите написать, дописать эту программу очень нужна ваша помощь... Задание:заданы два множества точек на плоскости. Построить...

пересечение и разность односвязных списков - C++
Помогите, пожалуйста. нужно написать подпрограммы для пересечения и получения разности двух списков


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
07.10.2013, 21:51
Ответ Создать тему
Опции темы

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