Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.12.2016
Сообщений: 2

Объединить два одномерных массива C++

15.12.2016, 22:30. Показов 4848. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! вопрос такой...необходимо написать функцию для объединения 2-х одномерных массивов...передача параметров в функцию происходит с помощью указателей..посмотрите, что не так?заранее благодарю)

#include "stdafx.h"
#include <iostream>
#include "time.h"
using namespace std;

void ArrayValue (int *ptrArray,int N);
bool UnionArray (int *ptr1, int N, int *ptr2, int M, int *ptr3, int &K);

int main()
{
srand(time(NULL));
int SizeArrayOne, SizeArrayTwo;
cout << "Enter size Array one: ";
cin >> SizeArrayOne;
cout << "Enter size Array two: ";
cin >> SizeArrayTwo;
int* ArrayOne = new int [SizeArrayOne];
int* ArrayTwo = new int [SizeArrayTwo];
int SizeArrayThree =SizeArrayOne + SizeArrayTwo;
int *ArrayThree = nullptr;
cout << "Adress: " << ArrayThree << "\n";
ArrayValue(ArrayOne,SizeArrayOne);
ArrayValue(ArrayTwo,SizeArrayTwo);
UnionArray (ArrayOne, SizeArrayOne,ArrayTwo,SizeArrayTwo,Array Three,SizeArrayThree);
cout << "Adress: " << ArrayThree << "\n";
delete [] ArrayOne;
delete [] ArrayTwo;
return 0;
}
void ArrayValue (int *ptrArray,int N)
{
cout << "Array ";
for (int i=0;i<N;i++)
{
ptrArray[i] = rand()%100;
cout << ptrArray[i] << " ";
}
cout << "\n";
}
bool UnionArray (int *ptr1, int N, int *ptr2, int M, int *ptr3, int &K)
{
int* Three = new int [K];
ptr3 = Three;
int i= 0;
int j = 0;
for (i=0,j=0; i<N && j<M; i++,j++)
{
*Three++ = *ptr1++;
*Three++ = *ptr2++;
}
// cout << "Adress: " << ArrayThree << "\n";
for (int k=0;k<K;k++)
{
cout << *Three++ << " ";
}
cout << "\n";
delete [] Three;
return 1;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2016, 22:30
Ответы с готовыми решениями:

Как объединить два одномерных массива в один двумерный массив?
можно ли как нибудь объединить два массива в один ДВУМЕРНЫЙ МАССИВ? Заранее спсибо void klava2(int* &amp;a1, int* &amp;b1) { cout...

Объединить два одномерных массива в один двумерный массив, состоящий из двух столбцов
Объединить два одномерных массива в один двумерный массив, состоящий из двух столбцов. Помогите написать код на С++.

Заданы два одномерных массива действительных чисел различных размеров. Объединить их в один массив, включив второй массив между k-м и (k+1)-м элемента
Заданы два одномерных массива действительных чисел различных размеров. Объединить их в один массив, включив второй массив между k-м и...

5
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
15.12.2016, 22:56
Вы указываете на удаление массива, указатель которого уже не указывает на начало массива.
C++
1
2
3
4
5
6
bool UnionArray(int *ptr1, int N, int *ptr2, int M, int *ptr3, int &K)
{
    ....
    delete [] Three;
    return 1;
}
0
6 / 6 / 2
Регистрация: 26.01.2016
Сообщений: 29
15.12.2016, 22:57
Один из способов.

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
#include <iostream>
using namespace std;
void f1(int *arr1,int *arr2,int *arr3,int n,int m)
{
int p=0;
for (int i=0; i<n;i++)
{
arr1[i]=rand()%100;//заполняем первый массив 
cout<<arr1[i]<<" ";
arr3[p]=arr1[i];//одновременно записываем в общий массив 
p++;
}
cout<<endl;
for (int i=0; i<m;i++)
{
arr2[i]=rand()%100;
cout<<arr2[i]<<" ";
arr3[p]=arr2[i];
p++;
}
cout<<endl<<"Общий массив"<<endl;
for (int i=0; i<n+m;i++)
cout<<arr3[i]<<" ";
 
}
 
void main()
{
setlocale(0, "");
int n,m;//размер первого, второго массива
cout<<"Введите размер первого массива: ";    cin>>n;
cout<<"Введите размер второго массива: ";    cin>>m;
int *arr1=new int[n];//первый массив 
int *arr2=new int[m];//второй массив
int *arr3=new int[n+m];//массив состоящий из элементов первого и второго
f1(arr1,arr2,arr3,n,m);
 
delete [] arr1,arr2,arr3;
system("pause");
}
0
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
15.12.2016, 22:57
Вы в функции изменяете указатель.
0
0 / 0 / 0
Регистрация: 15.12.2016
Сообщений: 2
15.12.2016, 23:22  [ТС]
забыл добавить..важное условие-третий массив, состоящий и предыдущих двух, должен быть динамически и память под него должна выделяться в функции UnionArray

Добавлено через 1 минуту
ящюр, а как изменить, чтоб указатель не изменялся?
0
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
15.12.2016, 23:39
Вот рабочий код
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include "time.h"
using namespace std;
 
void ArrayValue(int *ptrArray, int N);
int * UnionArray(int *ptr1, int N, int *ptr2, int M, int &K);
 
int main()
{
    srand(time(NULL));
    int SizeArrayOne, SizeArrayTwo;
    cout << "Enter size Array one: ";
    cin >> SizeArrayOne;
    cout << "Enter size Array two: ";
    cin >> SizeArrayTwo;
    int* ArrayOne = new int[SizeArrayOne];
    int* ArrayTwo = new int[SizeArrayTwo];
    int SizeArrayThree = SizeArrayOne + SizeArrayTwo;
    int *ArrayThree = nullptr;
    ArrayValue(ArrayOne, SizeArrayOne);
    ArrayValue(ArrayTwo, SizeArrayTwo);
    ArrayThree = UnionArray(ArrayOne, SizeArrayOne, ArrayTwo, SizeArrayTwo,  SizeArrayThree);
    for (int a = 0; a < SizeArrayThree; a++){
        cout << ArrayThree[a] << " ";
    }
    cout << endl;
    delete[] ArrayOne;
    delete[] ArrayTwo;
    delete[] ArrayThree;
    system("pause");
    return 0;
}
void ArrayValue(int *ptrArray, int N)
{
    cout << "Array ";
    for (int i = 0; i<N; i++)
    {
        ptrArray[i] = rand() % 100;
        cout << ptrArray[i] << " ";
    }
    cout << "\n";
}
int* UnionArray(int *arr1, int c1, int *arr2, int c2, int &K)
{
    int cc1 = 0, cc2 = 0;
    int* Three = new int[K];
    for (int a = 0; a < K; ){
        if (cc1 < c1){
            Three[a] = arr1[cc1];
            cc1++;
            a++;
        }
        if (cc2 < c2){
            Three[a] = arr2[cc2];
            cc2++;
            a++;
        }
    }
    return Three;
}


Добавлено через 1 минуту
Функция UnionArray теперь возвращает указатель на новый , объединенный массив.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.12.2016, 23:39
Помогаю со студенческими работами здесь

Два массива одномерных
Даны два одномерных массива, состоящих из n чисел (n-вводится с клавиатуры). Найти элементы, которых нет одновременно и в том и в другом...

два одномерных массива
Прошу помощи Дано два одномерных массива (заполнить случайно) х и у одинаковой размерности. Вычислить...

Ввести два одномерных массива и заменить нулями те элементы второго массива, которые есть в первом
Ввести два одномерных массива и заменить нулями те элементы второго массива, которые есть в первом

Дано два одномерных массива, создать третий массив который содержит элементы первого массива
Дано два одномерных массива, создать третий массив который содержит элементы первого массива, но без элементов второго массива. Заранее...

Из двумерного массива формировать два одномерных
Сам текст задачи: Вот код, который я написал: #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru