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

Получить за один просмотр упорядоченный массив С(К), путем слияния упорядоченных массивов A(N) и B(M)

14.11.2018, 22:58. Показов 2036. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня такой вопрос возник: как складывать одномерные массивы разных размеров? В интернете пишут только для двумерных. А у меня тема в универе - "Одномерные массивы".
А сама задача вот: получить за один просмотр массив С(К), упорядоченный по возрастанию, путем слияния массивов A(N) и B(M), упорядоченных по возрастанию (K = N + M).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.11.2018, 22:58
Ответы с готовыми решениями:

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

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

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

4
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
14.11.2018, 23:32
TimaGera31, здравствуйте! Вот пара вариантов решения:

Вариант 1:

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
#include <iostream>
 
    using namespace std;
 
int main() {
    int i, j, k, n, m;
    cout << "Enter the 1-st array size:\n";
    cout << "n = ";
    cin >> n;
    cout << "Enter the 2-nd array size:\n";
    cout << "m = ";
    cin >> m;
    int* a = new int[n];
    int* b = new int[m];
    int* c = new int[n+m];
    cout << "Enter the 1-st array:\n";
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    cout << "Enter the 2-nd array:\n";
    for (int i = 0; i < m; i++) {
        cin >> b[i];
    }
    i = j = k = 0;
    while (i < n && j < m) {
        if (a[i] <= b[j])
            c[k++] = a[i++];
        else
            c[k++] = b[j++];
    }
    if (i < n)
        for (int p = i; p < n; p++)
            c[k++] = a[p];
    else
        for (int p = j; p < m; p++)
            c[k++] = b[p];
    cout << "Output of the program:\n";
    for (int i = 0; i < k; i++) {
        cout << c[i] << " ";
    }
    delete [] a;
    delete [] b;
    delete [] c;
    system("pause");
    return 0;
}
Вариант 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
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <stack>
 
    using namespace std;
 
int main() {
    int i, j, n, m;
    stack<int> s1, s2, s3;
    cout << "Enter the 1-st array size:\n";
    cout << "n = ";
    cin >> n;
    cout << "Enter the 2-nd array size:\n";
    cout << "m = ";
    cin >> m;
    int* a = new int[n];
    int* b = new int[m];
    cout << "Enter the 1-st array:\n";
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        s1.push(a[i]);
    }
    cout << "Enter the 2-nd array:\n";
    for (int i = 0; i < m; i++) {
        cin >> b[i];
        s2.push(b[i]);
    }
    while ((s1.size() > 0) || (s2.size() > 0)) {
        if ((s1.size() > 0) && (s2.size() > 0)) {
            if (s1.top() < s2.top()) {
                s3.push(s2.top());
                s2.pop();
            } else {
                s3.push(s1.top());
                s1.pop();
            }
        } else if (s1.size() > 0) {
            s3.push(s1.top());
            s1.pop();
        } else {
            s3.push(s2.top());
            s2.pop();
        }
    }
    cout << "\nOutput of the program:\n";
    while (!s3.empty()) {
        cout << s3.top() << " ";
        s3.pop();
    }
    delete [] a;
    delete [] b;
    system("pause");
    return 0;
}
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
14.11.2018, 23:38
а при чём тут сложение? типичная операция слияния? тупо проходишь циклом и всё
C++
1
2
3
4
5
6
7
while (i<N && j<M)
  if (a[i]<b[j]) c[k++]=a[i++];
  else  c[k++]=b[j++];
while (i<N)
  c[k++]=a[i++];
while (j<M)
  c[k++]=b[j++];
Добавлено через 2 минуты
Fixer_84, когда писал, твоего поста ещё не было.
По-моему, у меня почти также, может чуть-чуть понятнее.
1
0 / 1 / 0
Регистрация: 31.10.2018
Сообщений: 113
15.11.2018, 00:08  [ТС]
Fixer_84, cпасибо большое, а могли бы вы еще объяснить, что происходит в 1ом варианте с 25ой по 36ю строчки?

Добавлено через 2 минуты
Kuzia domovenok, спасибо
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
15.11.2018, 19:10
Цитата Сообщение от TimaGera31 Посмотреть сообщение
Fixer_84, cпасибо большое, а могли бы вы еще объяснить, что происходит в 1ом варианте с 25ой по 36ю строчки?
Происходит заполнение массива c[n+m], в зависимости от значений элементов массивов a[i] и b[i]. То есть, происходит слияние двух упорядоченных по возрастанию массивов в один упорядоченный массив.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.11.2018, 19:10
Помогаю со студенческими работами здесь

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

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

Объединение двух упорядоченных по возрастанию массивов в один, также упорядоченный
Написать программу, которая объединяет два упорядоченных по возрастанию массива в один, также упорядоченный массив. Рекомендуемый вид...

Построить упорядоченный массив из двух других упорядоченных массивов
построить упорядоченный массив a из элементов массива b и c. Массивы b и c предварительно упорядочены по возрастанию.

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка 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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru