Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
81 / 81 / 33
Регистрация: 03.03.2013
Сообщений: 311

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

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

Студворк — интернет-сервис помощи студентам
Нужно сделать массив, в котором елементы будут расположены следующим образом:
m3={m1[0],m2[0],m1[1],m2[1],m1[2],m2[2] и т. д.}
Нужно учитывать, что количество елементов произвольных массивов может быть разное, в том числе какой то из массивов может не иметь елементов вобще.
Помогите с алгоритмом, пожалуйста.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2013, 00:05
Ответы с готовыми решениями:

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

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

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

2
...
 Аватар для anmartex
1910 / 1329 / 966
Регистрация: 12.02.2013
Сообщений: 2,172
15.04.2013, 06:46
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;
}
Code
1
2
stdout: 
1 2 3 4 5 6 7
1
2 / 2 / 3
Регистрация: 19.01.2013
Сообщений: 32
15.04.2013, 16:20
Лучший ответ Сообщение было отмечено Novi4ekC как решение

Решение

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.04.2013, 16:20
Помогаю со студенческими работами здесь

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

Получить за один просмотр упорядоченный массив С(К), путем слияния упорядоченных массивов A(N) и B(M)
У меня такой вопрос возник: как складывать одномерные массивы разных размеров? В интернете пишут только для двумерных. А у меня тема в...

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru