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

пересечение множеств - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
anton_00777
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 21
10.07.2011, 15:16     пересечение множеств #1
найти пересечение мнжества А и В. Результат вывести в другом множестве.
заранее спс.

извиняюсь если такое задание уже было
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
10.07.2011, 15:39     пересечение множеств #2
anton_00777, используй поиск, хотя бы гугл.
Пересечение, ообъединение, наименьший элемент пересечения множеств
anton_00777
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 21
10.07.2011, 15:58  [ТС]     пересечение множеств #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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int n=5 ;
    int d[10],c[10],a[n],b[n],i,j;
    bool k;
    for (i=0;i<n;i++)
        {
            cout<<"Bbegitb a["<<i<<"] :";
            cin>>a[i];
        }
    for (j=0;j<n;j++)
        {
            cout<<"Bbegitb b["<<j<<"] :";
            cin>>b[j];
        }
    for (i=0;i<n;i++)
        {
                    if(a[i]!=b[i])
                        {
                            c[i]=a[i];
                        }
                    else
                        {
                            c[i]=a[i];
                            d[i]=b[i];
                        }
        }
        
    for (i = 0 ; i < 5 ; i++)
        cout<< c[i]<<" ";
    for (i = 0 ; i < 5 ; i++)
        cout<< d[i]<<" ";
    return 0;
}
Добавлено через 1 минуту
делал 2ной цикл в проверке но не помогает....
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
11.07.2011, 12:19     пересечение множеств #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
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
        const int n=5 ;
    int a[] = { 1, 2, 3, 4, 5 };
    int b[] = { 8, 1, 5, 7, 3 };
        int c[n*2];
    int k = 0;
        for (int i=0; i < n; i++)  
    {
        for (int j=0; j <n; j++)
        {
        if (a[i] == b[j])
            c[k++] = a[i];
        }
    }
        
    for (int i = 0 ; i < n ; i++)
                cout<< a[i]<<" ";
        cout << endl;        
        for (int i = 0 ; i < n ; i++)
                cout<< b[i]<<" ";
        cout << endl;
        for (int i = 0 ; i < k ; i++)
                cout<< c[i]<<" ";
    cout << endl;
 
    cin.get();
        return 0;
}
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
11.07.2011, 13:16     пересечение множеств #5
Вот как вариант:
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
#include <iostream>
#include <algorithm>
#include <vector>
 
int main ( int argc, char * argv[] )
{
    int FirstSet[]  = { 1, 5, 6, -2, 3, 0 };
    int SecondSet[] = { 0, -2, 6, 12, 7, 10 };
 
    std::vector < int > Crossing ( ( sizeof ( FirstSet ) + sizeof ( SecondSet ) ) / 4 );
 
    std::sort ( FirstSet, FirstSet + ( sizeof ( FirstSet ) / 4 ) );
    std::sort ( SecondSet, SecondSet + ( sizeof ( SecondSet ) / 4 ) );
 
    std::vector < int >::iterator iter = std::set_intersection ( FirstSet, FirstSet + ( sizeof ( FirstSet ) / 4 ), 
                                                               SecondSet, SecondSet + ( sizeof ( SecondSet ) / 4 ), 
                                                               Crossing.begin() );
    
    for ( std::vector < int >::size_type it = 0; it < ( int ) ( iter - Crossing.begin() ); it++ )
        std::cout << " " << Crossing [ it ];
 
    std::cin.get();
    return 0;
}
Добавлено через 19 минут
Можно заменить вывод на:
C++
1
2
3
4
Crossing.resize ( static_cast < int > ( iter - Crossing.begin() ) );
    
for ( std::vector < int >::size_type it = 0; it < Crossing.size(); it++ )
    std::cout << " " << Crossing [ it ];
Yandex
Объявления
11.07.2011, 13:16     пересечение множеств
Ответ Создать тему
Опции темы

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