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

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

25.03.2012, 14:48. Просмотров 25479. Ответов 7
Метки нет (Все метки)

Написать программу, которая объединяет два упорядоченных по возрастанию массива в один, также упорядоченный массив.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2012, 14:48
Ответы с готовыми решениями:

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

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

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

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

7
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
25.03.2012, 15:25 2
что та в этом роде или как? если не верно, то приведете пример теста

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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int n,m,x;
 
    cout << "Enter size of first array\n";
    cin >> n;
    int *a = new int[n];
    cout << "Enter your first array\n";
    for (int i=0; i<n; i++)
    {
        cin >> a[i];
    }
    
    cout << "Enter size of second array\n";
    cin >> m;
    int *b = new int[m];
    cout << "Enter your second array\n";
    for (int i=0; i<m; i++)
    {
        cin >> b[i];
    }
    x = n + m;
 
    int *c = new int[x];
    for (int i=0; i<n; i++)
    {
        c[i] = a[i];
    }
    for (int i=n; i<x; i++)
    {
        c[i] = b[i - n];
    }
 
    for (int i=0; i<x; i++)
    {
        cout << c[i] << " ";
    }
 
    return 0;
}
2
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
04.03.2013, 16:31 3
Цитата Сообщение от Borland Посмотреть сообщение
в один, также упорядоченный массив.
Тут нужно чтобы 3 массив был упорядоченный, а тут получается он объединен но не упорядочен
0
1172 / 885 / 94
Регистрация: 03.08.2011
Сообщений: 2,455
04.03.2013, 17:13 4
Общая идея такая:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   int arr1Pos = 0;
   int arr2Pos = 0;
   int arr3Pos = 0;
   
   while ( true ) {
      array3[ arr3Pos++ ] = ( array1[ arr1Pos ] < array2[ arr2Pos ]) ? array1[ arr1Pos++ ] : array2[ arr2Pos++ ];
      
      if ( arr1Pos == arr1Size ) {
         while ( arr2Pos < arr2Size )
            array3[ arr3Pos++ ] = array2[ arr2Pos++ ];
         
         break;
      }
      
      if ( arr2Pos == arr2Size ) {
         while ( arr1Pos < arr1Size )
            array3[ arr3Pos++ ] = array1[ arr1Pos++ ];
         
         break;
      }
   }
EDIT: не заметил некропост...
0
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
04.03.2013, 17:33 5
Toshkarikслушай помоги плиз, вообщем смотри я прогу написал почти, вот не могу слить 2 массива можешь концовку написать?
начиная с 62 строки. У нас просто препод помешен на подробностях, хочет чтобы было все расписано подробно

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
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
 
int main()
{setlocale (LC_ALL, "Russian");
 
 int i,j,n,m,x,a,b,t,c,d,f;
 
 int *arr1,*arr2,*arr3;
 
 cout<<"Введите количество элементов 1 массива: \n";
 cin >> n;
     arr1 = new int [ n ];
      
     for (int i=0; i<n; i++)
        {
        cout<<"Введите элемент 1 неупорядоченного массива="; cin>> arr1[i];
         }
            for (a=1; a<n; a++) 
            for (b=n-1; b>=a; b--)      
           {
            if (arr1[b-1] > arr1[b]) 
              {
                t = arr1[b-1];
                arr1[b-1] = arr1[b];
                arr1[b] = t;
              }
           }
cout<<endl;
 
 
 cout<<"Введите количество элементов 2 массива: \n";
 cin >> m;
     arr2 = new int [ m ];
      
     for (int j=0; j<m; j++)
        {
        cout<<"Введите элемент 2 неупорядоченного массива="; cin>> arr2[j];
         }
            for (c=1; c<m; c++) 
            for (d=m-1; d>=c; d--)
          {
            if (arr2[d-1] > arr2[d]) 
            {
                f = arr2[d-1];
                arr2[d-1] = arr2[d];
                arr2[d] = f;
            }
            }
cout<<"Упорядоченный 1 массив:\n";
    for(t=0; t<n; t++) cout<<arr1[t]<<endl;
cout<<"Упорядоченный 2 массив:\n";
for(f=0; f<m; f++) cout<<arr2[f]<<endl;
cout<<endl;
 
 
 
x = n + m;
arr3 = new int[x];
 
 
 
 
   cout<<"Упорядоченный 3 массив:\n"; 
   for (int k=0; k<x; k++)
   {
       cout<<arr3[k]<<endl;
   }
 
 
_getch();
return 0;
}
0
1172 / 885 / 94
Регистрация: 03.08.2011
Сообщений: 2,455
04.03.2013, 18:00 6
Я же дал код выше. Замените имена массивов и имена размерностей на свои.

Добавлено через 2 минуты
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
...
x = n + m;
arr3 = new int[x];
 
   int arr1Pos = 0;
   int arr2Pos = 0;
   int arr3Pos = 0;
   
   while ( true ) {
      arr3[ arr3Pos++ ] = ( arr1[ arr1Pos ] < arr2[ arr2Pos ]) ? arr1[ arr1Pos++ ] : arr2[ arr2Pos++ ];
      
      if ( arr1Pos == n ) {
         while ( arr2Pos < m )
            arr3[ arr3Pos++ ] = arr2[ arr2Pos++ ];
         
         break;
      }
      
      if ( arr2Pos == m ) {
         while ( arr1Pos < n )
            arr3[ arr3Pos++ ] = arr1[ arr1Pos++ ];
         
         break;
      }
   }
 
 
   cout<<"Упорядоченный 3 массив:\n"; 
   for (int k=0; k<x; k++)
   {
       cout<<arr3[k]<<endl;
   }
...
1
12 / 12 / 2
Регистрация: 23.01.2013
Сообщений: 143
04.03.2013, 19:16 7
Вчера нам такую же задачку задали...
Вот мой вариант:

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
#include <iostream>
 
using namespace std;
 
template <class T, int n>
void init (T (&arr) [n], int dx)
{
    for (int i=0;i<n;i++)
    {
        *(arr+i)=i*dx;
    }
}
 
template <class T, int n>
void out (T (&arr) [n])
{
    for (int i=0;i<n;i++)
    {
        cout << *(arr+i) << " ";
    }
    cout << "\n\n";
}
 
template <class T, int n, int m>
void add (T (&a) [n], T (&b) [m], T (&c) [n+m])
{
    for (int i=0,j=0,h=0;h<(n+m);h++)
    {
        if (i==n)
        {
            *(c+h)=*(b+j);
            j++;
            continue;
        }
        if (j==m)
        {
            *(c+h)=*(a+i);
            i++;
            continue;
        }
        if (*(b+j)<=*(a+i))
        {
            *(c+h)=*(b+j);
            j++;
        }
        else
        {
            *(c+h)=*(a+i);
            i++;
        }
    }
}
 
 
template <class T, int n, int m>
void add2 (T (&a) [n], T (&b) [m], T (&c) [n+m])
{
    for (int i=0,j=0,h=0;h<(n+m);)
    {
        while(*(a+i)<=*(b+j)&&i<n||(j==m&&i<n))
        {
            *(c+h++)=*(a+i++);
        }
        while(*(b+j)<=*(a+i)&&j<m||(i==n&&j<m))
        {
            *(c+h++)=*(b+j++);
        }
    }
}
 
int main()
{
    const int n=6,m=7;
    int a[n];
    int b[m];
    int c[n+m];
 
    init(a,1);
    out(a);
    init(b,2);
    out(b);
    add(a,b,c);
    out(c);
 
    add2(b,a,c);
    out(c);
 
    return 0;
}
1
50 / 51 / 34
Регистрация: 29.12.2012
Сообщений: 478
30.04.2015, 03:18 8
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
#include<iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Rus");
 int aN,bN,cN;
    int x,y;
    cout<<"Введите размер множества A:";
    cin>>aN;
cout<<"ведите диапазон  множества A\n от:";
 
        cin>>x;
        cout<<" до:";
        cin>>y;
        cout<<"Введите элементы множества A:\n";
    int *A=new int[aN];
    for(int i=0;i<aN;i++){
        int z;
        cin>>z;
        if(z>x&&z<y)
         A[i]=z;
        else
         {cout<<"Вы вышли за диапазон, повторите ввод:\n";
        --i;}}
    cout<<"\n\nВведите размер множества B:";
    cin>>bN;
        int *B=new int[bN];
cout<<"Введите диапазон  множества B\n от:";
        cin>>x;
        cout<<" до:";
        cin>>y;
cout<<"Введите элементы множества B:\n";
    for(int i=0;i<bN;i++)
        {
        int z;
        cin>>z;
        if(z>x&&z<y)
         B[i]=z;
        else{cout<<"Вы вышли за диапазон, повторите ввод:\n";
        --i;}}
    cout<<"\n\nВведите размер множества C:";
    cin>>cN;
cout<<"ведите диапазон  множества B\n от:";
        cin>>x;
        cout<<" до:";
        cin>>y;
 
int *C=new int[cN];
cout<<"Введите элементы множества C:\n";
    for(int i=0;i<cN;i++)
        {
        int z;
        cin>>z;
        if(z>x&&z<y)
          C[i]=z;
        else
        {cout<<"Вы вышли за диапазон, повторите ввод:\n";
        --i;}}
    cout<<endl;
cout<<"\n\n\nМножество A:";
    for(int i=0;i<aN;i++)
        cout<<A[i]<<":";
    cout<<endl;
cout<<"\nМножество B:";
    for(int i=0;i<bN;i++)
        cout<<B[i]<<":";
    cout<<endl;
cout<<"\nМножество С:";
    for(int i=0;i<cN;i++)
        cout<<C[i]<<":";
    cout<<endl<<endl;
cout<<"\nОбъединение множеств A и B=:";
int *AC=new int[aN+cN];
  for (int i=0;i<aN;i++) 
      AC[i]=A[i];
  for (int i=aN; i<aN+cN; i++)
        AC[i] = C[i - aN];
  for (int i=0; i<aN+cN; i++)
      cout<<AC[i]<<":";
cout<<endl<<endl;
cout<<"Возводим в квадрат множество B=:";
    for(int i=0;i<bN;i++)
        cout<<B[i]*B[i]<<":";
    cout<<endl<<endl;
delete A;
delete B;
delete C;
delete AC;
 system("pause");
  return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2015, 03:18

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

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

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

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

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


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

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

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