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

Поиск одинаковых элементов в 2 массивах - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
leha-demi
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 125
11.06.2011, 17:43     Поиск одинаковых элементов в 2 массивах #1
Всем привет)
Как можно организовать поиск одинаковых элементов в 2 массивах?
(сам цикл подскажите пож...)
Спасибо заранее)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.06.2011, 17:49     Поиск одинаковых элементов в 2 массивах #2
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main(){
    int arr1[] = {1,2,3,4,5},len1 = sizeof(arr1)/sizeof(*arr1);
    int arr2[] = {5,6,7,8,3,10},len2 = sizeof(arr2)/sizeof(*arr2);
    for (int i=0; i < len1 ; i++)
        for (int j=0; j < len2; j++)
            if (arr1[i] == arr2[j]) std::cout << arr1[i] << ' ';
    return 0;
}
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
11.06.2011, 17:50     Поиск одинаковых элементов в 2 массивах #3
C++
1
2
3
4
5
6
for ( int i = 0; i < SizeOfFirst; i++ )
{
    for ( int j = 0; j < SizeOfSecond; j++ )
        if ( a [ i ] == b [ j ] )
            std::cout << a [ i ] << " ";
}
но элементы могут повторяться, так как тут нет контроля над уже найденными совпадениями...
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.06.2011, 17:55     Поиск одинаковых элементов в 2 массивах #4
С контролем
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <map>
int main(){
    int arr1[] = {1,2,3,4,5,3},len1 = sizeof(arr1)/sizeof(*arr1);
    int arr2[] = {5,6,7,8,3,10,3},len2 = sizeof(arr2)/sizeof(*arr2);
    std::map<int,int> m;
    for (int i=0; i < len1 ; i++)
        ++m[arr1[i]];
    for (int i=0; i < len2 ; i++)
        ++m[arr2[i]];
    for (std::map<int,int>::iterator i = m.begin(); i != m.end(); i++)
        if ((*i).second > 1) std::cout << (*i).first << ' ';    
    return 0;
}
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
11.06.2011, 18:00     Поиск одинаковых элементов в 2 массивах #5
можно чуть попроще
C++
1
2
3
4
5
6
7
    for (int i=0; i<len1; i++)
        for (int j=0; j<len2; j++)
            if (arr1[i]==arr2[j])
            m[arr1[i]]=0;
 
    for (std::map<int,int>::iterator it=m.begin(); it!=m.end(); it++)
        std::cout << it->first << ' ';
Yandex
Объявления
11.06.2011, 18:00     Поиск одинаковых элементов в 2 массивах
Ответ Создать тему
Опции темы

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