Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
syrabieb
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 23
1

Операции над множествами - прокомментировать строку кода

08.02.2016, 12:30. Просмотров 551. Ответов 3
Метки нет (Все метки)

Это оперции над множествами
Объясните пожалуйста что делает в case2.
Хотя бы одну объясните пжл

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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <stdlib.h>   
#include <conio.h>
#include <iostream>
#include <ctime>
#include <clocale>
 using namespace std;
main()
{
srand(time(NULL));
    setlocale(LC_ALL,"russian"); 
    int n1,n2,s,x,p,c,r; 
        cout<<"Размер 1 массива = "; 
        cin>>n1; 
        cout<<"Размер 2 массива = "; 
        cin>>n2; 
    int mass1[100],mass2[100];
    int *mass3[100];
        for (int i=0; i<n1;i++)
            mass1[i]=rand()%10;
     
        for (int j=0; j<n2;j++)
            mass2[j]=rand()%10;
        cout << "Выберите действие:\n 1-Массив;\n 2-Пересечение;\n 3-Объединение;\n 4-Разность:\n 5-Симметрическая разность:\n ";
            cin >> s;
  switch (s){
        case 1: {
        cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";break;
                }
        case 2:{ 
        p=0;int *mass3 = new int[p];
        for (int i = 0; i < n1; i++){ 
            int j=0, k=0;
                while (mass2[j] != mass1[i] && j < n2) j++;
                while (mass3[k] != mass1[i] && k < p) k++;
            if (j != n2 && k == p){
                mass3[p++] = mass1[i];
                }
            }
        cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";
            cout<<endl;
            cout<<"Пересечение:"<<endl;
        for (int i=0; i<p; i++)
            cout << mass3[i] << " ";break;
        } 
        case 3: { 
        x = n1 + n2;
        int *mass3 = new int[x];
        for(int i=0; i<n1; i++){
            mass3[i] = mass1[i];
            }
        for (int i=n1; i<x; i++){
            mass3[i] = mass2[i - n1];
            }
            cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";
            cout<<endl;   
            cout<<"Объединение:"<<endl;
        for (int i=0; i<x; i++)
            cout << mass3[i] << " ";break;
        }   
        case 4: { 
        c=0;int *mass3 = new int[c];
        for (int i=0; i<n1; i++){
            int j=0, f=0;
                while (mass2[j]!=mass1[i] && j<n2) j++;
                while (mass3[f]!=mass1[i] && f<c) f++;
            if(j==n2 && f==c) 
                mass3[c++] = mass1[i];
            }     
            cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";
            cout<<endl;
            cout<<"Разность:"<<endl;
        for (int i=0; i<c; i++)
            cout << mass3[i] << " ";break;
        }
        case 5: {
            r=0;
            int *mass3 = new int[c];
            for (int i=0; i<n1; i++)
                {
                    int k=0,t=0;
                    while(mass2[k]!=mass1[i] && k<n2) k++;
                    while(mass3[t]!=mass1[i] && t<r) t++;
                    if(k==n2 && t==r) mass3[r++] = mass1[i];
                    }
                    cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";
            cout<<endl;
            cout<<"Симметрическая разность:"<<endl;
        for (int i=0; i<r; i++)
            cout << mass3[i] << " ";break;
        }
        default: cout<<"Ошибка!!!"; 
  }
  getch();
  return 0;       
}
Добавлено через 26 минут
Вот кому пригодится добавил декартовое произведение
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <stdlib.h>   
#include <conio.h>
#include <iostream>
#include <ctime>
#include <clocale>
 using namespace std;
main()
{
srand(time(NULL));
    setlocale(LC_ALL,"russian"); 
    int n1,n2,s,x,p,c,r; 
        cout<<"Размер 1 массива = "; 
        cin>>n1; 
        cout<<"Размер 2 массива = "; 
        cin>>n2; 
    int mass1[100],mass2[100];
    int *mass3[100];
        for (int i=0; i<n1;i++)
            mass1[i]=rand()%10;
     
        for (int j=0; j<n2;j++)
            mass2[j]=rand()%10;
        cout << "Выберите действие:\n 1-Массив;\n 2-Пересечение;\n 3-Объединение;\n 4-Разность:\n 5-Симметрическая разность:\n 6-Декартовое произведение: ";
            cin >> s;
  switch (s){
        case 1: {
        cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";break;
                }
        case 2:{ 
        p=0;int *mass3 = new int[p];
        for (int i = 0; i < n1; i++){ 
            int j=0, k=0;
                while (mass2[j] != mass1[i] && j < n2) j++;
                while (mass3[k] != mass1[i] && k < p) k++;
            if (j != n2 && k == p){
                mass3[p++] = mass1[i];
                }
            }
        cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";
            cout<<endl;
            cout<<"Пересечение:"<<endl;
        for (int i=0; i<p; i++)
            cout << mass3[i] << " ";break;
        } 
        case 3: { 
        x = n1 + n2;
        int *mass3 = new int[x];
        for(int i=0; i<n1; i++){
            mass3[i] = mass1[i];
            }
        for (int i=n1; i<x; i++){
            mass3[i] = mass2[i - n1];
            }
            cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";
            cout<<endl;   
            cout<<"Объединение:"<<endl;
        for (int i=0; i<x; i++)
            cout << mass3[i] << " ";break;
        }   
        case 4: { 
        c=0;int *mass3 = new int[c];
        for (int i=0; i<n1; i++){
            int j=0, f=0;
                while (mass2[j]!=mass1[i] && j<n2) j++;
                while (mass3[f]!=mass1[i] && f<c) f++;
            if(j==n2 && f==c) 
                mass3[c++] = mass1[i];
            }     
            cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";
            cout<<endl;
            cout<<"Разность:"<<endl;
        for (int i=0; i<c; i++)
            cout << mass3[i] << " ";break;
        }
        case 5: {
            r=0;
            int *mass3 = new int[c];
            for (int i=0; i<n1; i++)
                {
                    int k=0,t=0;
                    while(mass2[k]!=mass1[i] && k<n2) k++;
                    while(mass3[t]!=mass1[i] && t<r) t++;
                    if(k==n2 && t==r) mass3[r++] = mass1[i];
                    }
                    cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";
            cout<<endl;
            cout<<"Симметрическая разность:"<<endl;
        for (int i=0; i<r; i++)
            cout << mass3[i] << " ";break;
        }
case 6: {
            cout<<"1 массив:"<<endl;
        for (int i=0; i<n1;i++)
            cout<<mass1[i]<<" ";
            cout<<endl;
            cout<<"2 массив:"<<endl;
        for (int j=0; j<n2;j++)
            cout<<mass2[j]<<" ";
            cout<<endl;
            cout<<"Декартовое произведение"<<endl;
            for (int i=0;i<n1;i++){
                for (int j=0;j<n2; j++){
                    if ((i==n1-1)&&(j==n2-1)){
                        cout<<"("<<mass1[i]<<","<<mass2[j]<<")";break;
                        }
                    cout<<"("<<mass1[i]<<","<<mass2[j]<<"), ";
                }
            }     
            break;
        }
        default: cout<<"Ошибка!!!"; 
  }
  getch();
  return 0;       
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2016, 12:30
Ответы с готовыми решениями:

Операции над множествами
Найти A B C, A ∩ B ∩ C, (A ∩ B) C, A ∩ (B C), если A={{1;2},{1;3},{2}},...

Операции над множествами
Прошу помочь с написанием программы на с++. Нужно чтобы выполнялись операции над множествами,...

Реализовать операции над множествами
Собственно только началась учеба на первом курсе,и вот препод задал написать програму,которая...

Продемонстрировать операции над множествами
Помогите перевести код с Pascal на С++: program Demonstrator; type T_Digit = set of byte; ...

Выполнить логические операции над множествами, записанными в файлы
Помогите пожалуйста написать программу на C++ Дано 3 множества А, В, С. Элементы множеств...

3
Байт
Эксперт C
20451 / 12981 / 2728
Регистрация: 24.12.2010
Сообщений: 27,163
08.02.2016, 14:58 2
Цитата Сообщение от syrabieb Посмотреть сообщение
что делает в case2.
Цитата Сообщение от syrabieb Посмотреть сообщение
case 2:{
p=0;int *mass3 = new int[p];
Нечто очень странное. Выделяет массиву память на 0 целых элементов, а потом еще собирается в этот массив что-то писать...
0
syrabieb
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 23
08.02.2016, 22:20  [ТС] 3
можете объяснить что делают циклы?
0
nar10z
1 / 1 / 4
Регистрация: 04.12.2015
Сообщений: 51
08.02.2016, 22:40 4
Цикл- повторение чего либо определенное кол-во раз, пока условие истинно или ложно.
0
08.02.2016, 22:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2016, 22:40

Реализовать базовые операции над множествами: объединение, пересечение, дополнение
Вот как звучит задание: &quot;Объект: множество символов алфавита. Реализовать базовые операции над...

Операции над множествами - переписать код для работы с буквами
Здравствуйте,помогите пожалуйста подкорректировать код. В общем есть код, который выполняет...

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


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

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

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