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

Объединение двух массивов

26.09.2014, 14:39. Просмотров 1464. Ответов 19
Метки нет (Все метки)

Выполнено два задания:нашли Элементы массива A, которые не включаются в B и Элементы массива B, которые не включаются в A. Как объединить результаты в один массив?
Код полностью:

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
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
 
void main()
{
srand (time(NULL));
    
    const int size_3=5;
    int mas_1[size_3];
    int *pmas_1=mas_1;
 
    for(int p=0;p<size_3;p++)
    {
        pmas_1[p]=rand()%20; 
    }
    //начальный вид первого массива
 
    for(int p=0;p<size_3;p++)
    {
        cout<<pmas_1[p]<<" ";
    }
    cout<<endl;
 
    const int size_4=5;
    int mas_2[size_4];
    int *pmas_2=mas_2;
 
    for(int l=0;l<size_4;l++)
    {
        pmas_2[l]=rand()%20;
    }
    //начальный вид второго массива
    for(int l=0;l<size_4;l++)
    {
        cout<<pmas_2[l]<<" ";
    }
    cout<<endl;
Элементы массива A, которые не включаются в B;   
 
//  int mas_5[size_4];
//  int *pmas_5=mas_5;
//  int k3=0;
//      
//  for (int i3 = 0; i3 < size_4; ++i3)
//  {
//    int j3 = 0;
//    // поиск
//    while ((j3 < size_3) && (pmas_1[i3] != pmas_2[j3]))
//    {
//        ++j3;
//    }
// 
//    if (j3 == size_3) // если не нашли - добавляем в другой массив
//    {
//        pmas_5[k3] = pmas_1[i3];
//        ++k3;
//    }
//   }// 
 
//    for(int i3 = 0; i3 < k3; i3++)
//    {
//      cout << pmas_5[i3] << " ";
//    }
//      cout << endl;
//
//   
Элементы массива B, которые не включаются в A; 
//    
//    int mas_6[size_4];
//    int *pmas_6=mas_6;
//    int k4=0;
//  
//
//    for (int j4 = 0; j4 < size_4; ++j4)
//    {
//      int i4 = 0;
//      // поиск
//       while ((i4 < size_4) && (pmas_2[j4] != pmas_1[i4]))
//       {
//         ++i4;
//       }
// 
//         if (i4 == size_4) // если не нашли - добавляем в другой массив
//          {
//            pmas_6[k4] = pmas_2[j4];
//            ++k4;
//           }
//     }
//
//   for(int j4 = 0; j4 < k4; j4++)
//   {
//      cout << pmas_6[j4] << " ";
//   }
//      cout << endl;
 
 
int mas_7[size_3+size_4];
    int *pmas_7=mas_7;
    int k5=0;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2014, 14:39
Ответы с готовыми решениями:

Объединение двух массивов
Ребята,срочно. Даны два масссива b и c как их объединить в один третий массив d например?

Объединение двух массивов
Всем привет! Есть два массива, в которых есть одинаковые элементы: a={1,2,5,64,23,65,34,6} и...

Объединение двух массивов.
Добрый день!!!! Стоит задача из двух массивов сделать один. Первый массив А...

Объединение двух массивов
Добрый день помогите пожалуйста решыть задачу по програмированнию. Есть два массива целых чисел...

19
1358 / 582 / 198
Регистрация: 02.08.2011
Сообщений: 2,880
26.09.2014, 14:53 2
C++
1
2
3
4
5
6
7
8
9
10
11
const int N=5;
 const int M=7;
 
 int Arr1[N]={1,2,3,4,5};
 int Arr2[M]={6,7,8,9,10,11,12};
 
 int FullArray[N+M];
 memmove(FullArray,Arr1,N*sizeof(int));
 memmove(FullArray+N,Arr2,M*sizeof(int));
 
 for (int i=0;i<N+M;i++) cout<<FullArray[i]<<"\n";
0
Эксперт С++
4962 / 3068 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
26.09.2014, 14:57 3
daslex, зачем memmove? Можно же просто memcpy.
0
daslex
26.09.2014, 14:59
  #4

Не по теме:

Мне разница неизвестная. Я знаю, что там чего-то с наложением связано. А конкретно когда что лучше не имею понятия пока что.

0
Эксперт С++
4962 / 3068 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
26.09.2014, 15:01 5
daslex, если dst перекрывается с src, то можно безопасно копировать через memmove, иначе можно использовать memcpy (она должна быть быстрее).
0
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 81
26.09.2014, 15:02  [ТС] 6
не подходит. строки еще не учили. только указатели
0
Эксперт С++
4962 / 3068 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
26.09.2014, 15:03 7
Lena86, у него в примере нет строк.
0
842 / 773 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
26.09.2014, 15:09 8
C++
1
2
3
4
5
6
7
8
9
10
int mas_7[size_3+size_4];
int k5=0;
for (int i = 0; i < k3; ++i, ++k5)
{
    mas_7[i] = mas_5[i];
}
for (int i = 0; i < k4; ++i, ++k5)
{
    mas_7[k5] = mas_6[i];
}
0
daslex
26.09.2014, 15:09
  #9

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
если dst перекрывается с src,
Лучше всего на примере простом.

0
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 81
26.09.2014, 15:19  [ТС] 10
John Prick, а что писать в cout?
0
Эксперт С++
4962 / 3068 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
26.09.2014, 15:20 11
daslex, замени memmove на memcpy
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <string.h>
 
int main ()
{
  char str[] = "memmove can be very useful......";
  memmove (str+20,str+15,11);
  puts (str);
  return 0;
}
http://www.cplusplus.com/reference/cstring/memmove/?kw=memmove
1
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 81
26.09.2014, 15:23  [ТС] 12
castaway, если здесь нет строк, зачем нужна библиотека #include <string.h>?
0
Эксперт С++
4962 / 3068 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
26.09.2014, 15:25 13
Lena86, я это не тебе написал.
Смотри второй пост, там нет строк.
0
842 / 773 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
26.09.2014, 15:31 14
Цитата Сообщение от Lena86 Посмотреть сообщение
а что писать в cout?
C++
1
2
for (int i = 0; i < k5; ++i)
    cout << mas_7[i];
Добавлено через 1 минуту
А вообще, я же вам говорил порядок навести в именах массивов и их размеров. Просто мучение одно каждый раз смотреть, какому массиву какой размер соответствует.
0
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 81
26.09.2014, 15:35  [ТС] 15
John Prick,
0
John Prick
26.09.2014, 15:45
  #16

Не по теме:

Lena86, что вечером делаешь?

0
daslex
26.09.2014, 16:17
  #17

Не по теме:

При замене не получилось увидеть разницу

0
1358 / 582 / 198
Регистрация: 02.08.2011
Сообщений: 2,880
26.09.2014, 16:30 18
del
0
castaway
26.09.2014, 16:31
  #19

Не по теме:

daslex, у меня сейчас нет возможности проверить. Попробую посмотреть на выходных.

0
1358 / 582 / 198
Регистрация: 02.08.2011
Сообщений: 2,880
26.09.2014, 16:32 20
del
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2014, 16:32

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

Объединение двух массивов
Написать программу, которая объединяет два упорядоченных по возрастанию массива в один, также...

Объединение двух массивов
Есть два массива констант. a ,b. Необходимо из элементов этих массивов сделать третий массив ab ...

Объединение двух массивов
Пожалуйста! Дано два впорядкованих за зростанням масиви A(m) та B(n). Отримати з них за допомогою...

Объединение двух массивов
Даны два упорядоченных по возрастанию массива действительных чисел одинакового размера: и ....


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

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

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