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

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

08.02.2016, 12:30. Просмотров 797. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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; ...

3
Эксперт C
23440 / 14683 / 3093
Регистрация: 24.12.2010
Сообщений: 31,284
08.02.2016, 14:58 2
Цитата Сообщение от syrabieb Посмотреть сообщение
что делает в case2.
Цитата Сообщение от syrabieb Посмотреть сообщение
case 2:{
p=0;int *mass3 = new int[p];
Нечто очень странное. Выделяет массиву память на 0 целых элементов, а потом еще собирается в этот массив что-то писать...
0
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 23
08.02.2016, 22:20  [ТС] 3
можете объяснить что делают циклы?
0
1 / 1 / 4
Регистрация: 04.12.2015
Сообщений: 51
08.02.2016, 22:40 4
Цикл- повторение чего либо определенное кол-во раз, пока условие истинно или ложно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2016, 22:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Логические операции над множествами
пусть U - множество целых чисел от 0 до 25 А - множество чисел с U, кратных n, Б - множество...

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

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

Основные операции теории множеств над двумя числовыми множествами
Здравствуйте! Напишите пожалуйста, программу, которая реализует основные операции теории множеств...


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

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

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