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

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

Войти
Регистрация
Восстановить пароль
 
Novi4ekC
81 / 81 / 19
Регистрация: 03.03.2013
Сообщений: 311
#1

Надо создать массив путем слияния двух произвольных одномерных массивов - C++

15.04.2013, 00:05. Просмотров 416. Ответов 2
Метки нет (Все метки)

Нужно сделать массив, в котором елементы будут расположены следующим образом:
m3={m1[0],m2[0],m1[1],m2[1],m1[2],m2[2] и т. д.}
Нужно учитывать, что количество елементов произвольных массивов может быть разное, в том числе какой то из массивов может не иметь елементов вобще.
Помогите с алгоритмом, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 00:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Надо создать массив путем слияния двух произвольных одномерных массивов (C++):

Надо создать массив путем слияния двух произвольных одномерных массивов - C++
Надо создать массив путем слияния двух произвольных одномерных массивов. Порылся в интернете и подумал что создание массива должно...

Из двух упорядоченных массивов получить путем слияния упорядоченный массив C - C++
ЗАДАЧА. Из двух упорядоченных массивов по не возрастанию массивов A(m) и B(n) получить путем слияния упорядоченный массив C; удаляемые...

Получить из двух упорядоченных массивов путем слияния упорядоченный по возрастанию массив - C++
Получить из них путем слияния упорядоченный по возрастанию массив С; совпадающие элементы выставлять единожды. Заранее спасибо!

Сформировать массив L из массивов A и B путем их слияния - C++
1. Задан массив A из N элементов и массив B из M элементов. Сформировать массив L из массивов A и B путем их слияния так, чтобы сначала...

Создать массив, в котором присутствуют только совпадающие элементы двух известных одномерных массивов - C++
Надо создать массив, в котором присутствуют только елементы двух известных одномерных массивов. Подскажите как это зделать, плиз.

Получить упорядоченный массив путем слияния двух введенных и вывести его - C++
На языке С .Ввести два упорядоченных массива. Получить упорядоченный массив путем слияния двух введенных и вывести его

2
anmartex
...
1706 / 1199 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
15.04.2013, 06:46 #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
#include <stdio.h>
 
void Two2One(int m1[], int nM1, int m2[], int nM2, int m3[])
{
    int i = 0, j = 0;
 
    int nMax = (nM1 < nM2) ? nM2 : nM1;
 
    for (i = 0; i < nMax; ++i)
    {
        if (i < nM1)
        {
            m3[j++] = m1[i];
        }
 
        if (i < nM2)
        {
            m3[j++] = m2[i];
        }
    }
}
 
int main()
{
 
    int m1[4] = { 1, 3, 5, 7 };
    int m2[3] = { 2, 4, 6 };
    int m3[7];
    int i;
 
    Two2One(m1, 4, m2, 3, m3);
 
    for (i = 0; i < 7; ++i)
    {
        printf("%d ", m3[i]);
    }
 
    return 0;
}
Код
stdout: 
1 2 3 4 5 6 7
1
wowofbob
2 / 2 / 0
Регистрация: 19.01.2013
Сообщений: 32
15.04.2013, 16:20 #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
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 < typename ArrayType > 
void print_array(ArrayType * arr, const int & size) {
    for (int i = 0; i < size; ++i) {
        cout << "Array[" << i << "] = " << arr[i] << endl;
    }
}
 
//Создание массива:
template < typename ArrayType >
ArrayType * get_array(const int & size) {
    ArrayType * array = new ArrayType [size];
    for (int i = 0; i < size; ++i) {
        cout << "Array[" << i << "] = ";
        ArrayType val;
        cin >> val;
        array[i] = val;
    }
    return array;
}
 
//Слияние массивов:
template < typename ArrayType >
ArrayType * fusion(int & new_array_size, const ArrayType * arr1, const int & size1, ArrayType * arr2, const int & size2) {
    
    //Вычисление длины массива-результата слияния:
    new_array_size = size1 + size2 ;
    ArrayType * array = new ArrayType [new_array_size];
    ArrayType * ptr = array;
    
    //Надо вычислить наименьшую длину из двух поданных
    //массив, чтобы сначала заполнить новый массив парами,
    //как указано в задании:
    int limit1;
    int limit2;
    //Этот указатель понадобится для записи в новый массив
    //тех элементов, для которых не нашлось пары (короче,
    //оставшихся элементов из самого длинного массива):
    const ArrayType * MaxSizeArray;
    if (size1 < size2) {
        limit1 = size1;
        limit2 = size2;
        MaxSizeArray = arr2;
    }
    else {
        limit1 = size2;
        limit2 = size1;
        MaxSizeArray = arr1;
    }
    MaxSizeArray += limit1;
    
    for (int i = 0; i < limit1; ++i) {
        *(ptr++) = arr1[i];
        *(ptr++) = arr2[i];
    }
    
    for (int i = limit1; i < limit2; ++i) {
        *(ptr++) = *(MaxSizeArray++);
    }
    
    return array;
    
}
        
    
    
int main() {
 
    int size1;
    cout << "Size of first array is ";
    cin >> size1;
    int * arr1 = get_array < int > (size1);
    cout << endl;
    
    int size2;
    cout << "Size of second array is ";
    cin >> size2;
    int * arr2 = get_array < int > (size2);
    cout << endl;
    
    int fusion_result_size;
    int * fusion_result = fusion < int > (fusion_result_size, arr1, size1, arr2, size2);
    print_array < int > (fusion_result, fusion_result_size);
    
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 16:20
Привет! Вот еще темы с ответами:

Даны два произвольных одномерных массива действительных чисел М1 и М2. Сформировать слиянием этих массивов упорядоченный массив М3 - C++
Помогите с работой на Borland C++ 5.02:Даны два произвольных одномерных массива действительных чисел М1 и М2. Сформировать слиянием этих...

Получить массив С(К). упорядоченный по возрастанию, путем слияния массивов A(N) и В(М). упорядоченных по возрастанию (К = N + М). - C++
Получить массив С(К). упорядоченный по возрастанию, путем слияния массивов A(N) и В(М). упорядоченных по возрастанию (К = N + М). ...

Получить массив С(К), упорядоченный по возрастанию, путем слияния массивов A(N) и B(M), упорядоченных по возрастанию (K = N + M) - C++
Ребята выручите пожалуйста! Получить массив С(К), упорядоченный по возрастанию, путем слияния массивов A(N) и B(M), упорядоченных по...

Сформировать массив из двух других одномерных массивов STL - C++
Алгоритмы стандартной библиотеки шаблонов STL Даны два одномерных массива, состоящие из N (N&gt;5) целых чисел из диапазона . Сформировать...


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

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

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