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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Flyinsky
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 48
#1

Пересечение массивов - C++

21.04.2012, 00:31. Просмотров 2190. Ответов 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
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "locale.h"
#include "stdlib.h"
#include "time.h "
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_ALL, "russian");
    int n=0,j, i, s=1;
 
    int numRes,diff,z=0,a[10];
double b[2]={};
 
 
 
printf("Введите число элеметов в массиве X:  ");
scanf("%i",&s);
printf("\n");
 
 
printf("массив X:  \n");
 
for( i=0;i<s;i++){
     a[i]= rand()%50-1;
     printf("%d ",  rand()%50-1);
     printf("\n");
}
printf("\n");
printf("массив Y: \n ");
for( i=0;i<2;i++){
     b[i]= rand()%50-1;
     printf("%d ",rand()%50-1);
}
 
 
getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2012, 00:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пересечение массивов (C++):

Найти пересечение массивов - C++
Здравствуйте. Работаю с массивами. Есть 2 массива и нужно найти их пересечение. Проблема: если есть 2 или более соответствий, то есть в...

Найти пересечение двух массивов - C++
Даны два массива : А и B. Необходимо создать третий массив, в котором нужно собрать:-Общие элементы двух массивов. общие элементы...

Пересечение двух одномерных массивов N размера - C++
Всем привет! Было задание: Испробовал кучу кодов (пересечение с сортировкой, без сортировки, удаление повторяющихся элементов в...

Пересечение двух прямых и проверка на пересечение - C++
Доброго времени суток слизал функцию проверки отсюда:/segments_intersection_checking на всякий случай у меня она выглядит так: int...

Создать массив структур без использования массивов и нотации массивов - C++
Доброго времени суток! Есть задание, в котором нужно создать массив структур, имея следующую структуру: struct name { string...

В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов - C++
Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов. На печать вывести...

3
MrGluck
Модератор
Эксперт CЭксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,590
21.04.2012, 00:54 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
#include <iterator>
 
template <typename T>
void Intersection(T *A, int m, T *B, int n)
{
    T C[m+n];
    std::merge(&A[0], &A[m], &B[0], &B[n], &C[0]);    
    std::sort(&C[0], &C[m+n]);
    std::copy(&C[0], std::unique(&C[0], &C[m+n]), std::ostream_iterator<T>(std::cout, " "));
    std::cout<< std::endl;
}
 
int main()
{
    int iA[] = {1, 2, 3, 4, 5}, iB[] = {3, 4, 5, 6};
    Intersection(iA, sizeof(iA)/sizeof(iA[0]), iB, sizeof(iB)/sizeof(iB[0]));
    double dA[] = {1.1, 2.2, 3.3, 4.4, 5.5}, dB[] = {3.3, 1.2, 1.5, 4.4}; 
    Intersection(dA, sizeof(dA)/sizeof(dA[0]), dB, sizeof(dB)/sizeof(dB[0]));
    return 0;
}
1
Flyinsky
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 48
21.04.2012, 05:34  [ТС] #3
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
#include <iterator>
 
template <typename T>
void Intersection(T *A, int m, T *B, int n)
{
    T C[m+n];
    std::merge(&A[0], &A[m], &B[0], &B[n], &C[0]);    
    std::sort(&C[0], &C[m+n]);
    std::copy(&C[0], std::unique(&C[0], &C[m+n]), std::ostream_iterator<T>(std::cout, " "));
    std::cout<< std::endl;
}
 
int main()
{
    int iA[] = {1, 2, 3, 4, 5}, iB[] = {3, 4, 5, 6};
    Intersection(iA, sizeof(iA)/sizeof(iA[0]), iB, sizeof(iB)/sizeof(iB[0]));
    double dA[] = {1.1, 2.2, 3.3, 4.4, 5.5}, dB[] = {3.3, 1.2, 1.5, 4.4}; 
    Intersection(dA, sizeof(dA)/sizeof(dA[0]), dB, sizeof(dB)/sizeof(dB[0]));
    return 0;
}
Благодарю за помощь, ставлю ваш код в мою программу точнее кусок программы где ввод двух первых массивов получается вот так :

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
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "locale.h"
#include "stdlib.h"
#include "time.h "
#include "iostream"
#include "algorithm"
#include "iterator"
 
 
 
int n=0,j, i, s=1;
int numRes,diff,z=0,a[10];
double b[2]={},c[2]={};
 
template <typename T>
void Intersection(T *A, int m, T *B, int n)
{
    T C[m+n];
    std::merge(&A[0], &A[m], &B[0], &B[n], &C[0]);    
    std::sort(&C[0], &C[m+n]);
    std::copy(&C[0], std::unique(&C[0], &C[m+n]), std::ostream_iterator<T>(std::cout, " "));
    std::cout<< std::endl;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_ALL, "russian");
    
int iA[] = {1, 2, 3, 4, 5}, iB[] = {3, 4, 5, 6};
 
 
printf("Введите число элеметов в массиве X:  ");
scanf("%i",&s);
printf("\n");
 
 
printf("массив X:  \n");
 
for( i=0;i<s;i++){
     a[i]= rand()%50-1;
     printf("%d ",  rand()%50-1);
     printf("\n");
}
printf("\n");
printf("массив Y: \n ");
for( i=0;i<2;i++){
     b[i]= rand()%50-1;
     printf("%d ",rand()%50-1);
}
{ 
    Intersection(iA, sizeof(iA)/sizeof(iA[0]), iB, sizeof(iB)/sizeof(iB[0]));
    double dA[] = {1.1, 2.2, 3.3, 4.4, 5.5}, dB[] = {3.3, 1.2, 1.5, 4.4}; 
    Intersection(dA, sizeof(dA)/sizeof(dA[0]), dB, sizeof(dB)/sizeof(dB[0]));
    
}
 
 
getch();
  
    return 0;
}
Валится куча ошибок, что я сделал не так ?
0
Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
21.04.2012, 11:17 #4
то, что скинул MrGluck является рабочей программой, а не куском кода) удалите всё и вставьте данный код=))
0
21.04.2012, 11:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2012, 11:17
Привет! Вот еще темы с ответами:

В каждом из заданных массивов найти наибольшее значение, и разделить на него все элементы массивов - C++
Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и разделить на него все элементы массивов. На печать вывести...

Сравнение массивов: найти максимальное перебором массивов - C++
Добрый вечер такая проблема даны два одномерных массива A, B причем в каждом массиве записанно число по разрядно Задачи найти...

Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на него все элементы массивов. На печать вывести исходные - C++
Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на него все элементы массивов. На печать...

Обработка одномерных массивов. Сортировка массивов - C++
Здравствуйсте! Помогите пожалуйста написать программу! В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)...


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

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

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