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

Слияние двух массивов - C++

Восстановить пароль Регистрация
 
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
14.12.2013, 22:01     Слияние двух массивов #1
Всем привет. Возникла проблема с задачей. Даны два массива одинакоого размера. Нужно создать 3 массив который будет хранить элементы первого и второго массива. Проблема в том что первый массив у меня передается в 3 массив, а все элементы 2 массива почему то равны первому элементу(тоесть счетчик j не инкрементируется)вот ф-ция которая должна соединить 2 массива
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
void merge(int arr[],int arr1[],int arr2[],int n)
{
    for(int i(0);i<n;i++)
        arr[i]=arr1[i];
    for(int i(n);i<2*n;i++)
    {
        for(int j=0;j<n;j++)//j не инкрементируется
        {
            arr[i]=arr2[j];
            break;
        }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
14.12.2013, 22:19     Слияние двух массивов #2
Hrollo, вот, как отработает ваша программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
arr[ n ] = arr2[ 0 ];
arr[ n ] = arr2[ 1 ];
arr[ n ] = arr2[ 2 ];
arr[ n ] = arr2[ 3 ];
....
arr[ n ] = arr2[ n - 1 ];
 
arr[ n + 1 ] = arr2[ 0 ];
arr[ n + 1 ] = arr2[ 1 ];
....
arr[ n + 1 ] = arr2[ n - 1 ];
....
arr[ 2 * n - 1 ] = arr2[ n - 1 ];
katsidelin
 Аватар для katsidelin
60 / 21 / 2
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
14.12.2013, 22:29     Слияние двух массивов #3
Если n - длина массивов arr1[] и arr2[] и все они у Вас заданы глобально...
И длина arr[] равна 2n...
C++
1
2
3
4
5
6
7
8
9
10
11
void merge(int arr[],int arr1[],int arr2[],int n)
{
for (int x = 0; x<=n; x++)
{
arr[x] = arr1[x];
};
for (int x = n+1; x <= 2*n; x++)
{
arr[x] = arr2[x];
};
}
Как-то так!
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
14.12.2013, 22:49  [ТС]     Слияние двух массивов #4
такой вариант я уже пробовал и он к сожалению не работает
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
14.12.2013, 22:55     Слияние двух массивов #5
Hrollo,
C++
1
2
3
4
5
6
7
8
9
10
11
....
for ( int i ( 0 ); i < n; i++ )
{
    arr[ i ] = arr1[ i ];
}
 
for ( int i ( n ), int j ( 0 ); ( i < n * 2 ) && ( j < n ); i++, j++ )
{
    arr[ i ] = arr2[ j ];
}
....
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
14.12.2013, 23:01  [ТС]     Слияние двух массивов #6
Спасибо помогло. Если не трудно можете ответить еще на один вопрос(что бы не создавать новую тему). Сортировку слиянием можно было применить в данном случае или она предназначена только для одного массива?
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
14.12.2013, 23:10     Слияние двух массивов #7
Hrollo, можно. Попробуйте так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main()
{
    int arr1[ 5 ] = {/*ваши_значения*/};
    int arr2[ 5 ] = {/*ваши_значения*/};
    int arr[ 10 ];
 
    merge( arr1, arr1 + 5, arr2, arr2 + 5, arr );
 
    ....
    return 0
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 23:16     Слияние двух массивов
Еще ссылки по теме:

Слияние двух отсортированых массивов в один C++
Слияние двух массивов, заполненных случайными числами, в третий C++
C++ Слияние двух файлов по алгоритму: цифра вставляется после двух символов

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
14.12.2013, 23:16     Слияние двух массивов #8
все делается в один цикл
C++
1
2
3
4
5
for(int i=0;i<n;i++)
 {
   arr3[i]=arr1[i];
   arr3[i+n]=arr2[i];
}
Yandex
Объявления
14.12.2013, 23:16     Слияние двух массивов
Ответ Создать тему
Опции темы

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