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

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

22.11.2022, 01:59. Показов 1129. Ответов 2

Студворк — интернет-сервис помощи студентам
мне задали задание, а я нач. програмист нажно получить массив С(n+m) путем слияния массивов А(n) и В(m); массивы
А(n) и В(m) предварительно упорядочить по росту, методом пузирька, подсчитать количество принадлежащих элементов
условии: А(и) > В(и).
нашла такой код, а дальше незнаю (
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 <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int n, m, h, * A, * B, * L;
    cout << "N:"; cin >> n;
    cout << "M:"; cin >> m;
    A = new int[n];
    cout << "A:";
    for (int i = 0; i < n; ++i)
    {
        A[i] = rand() % 101;
        cout << " " << A[i];
    }
    B = new int[m];
    cout << endl << "B:";
    for (int i = 0; i < m; ++i)
    {
        B[i] = rand() % 101;
        cout << " " << B[i];
    }
    L = new int[n + m];
    for (int i = 0; i < n; ++i)
        L[i] = A[i]+B[i];
    for (int i = 0; i < m; ++i)
        L[n + i] = B[i]+A[i];
    cout << endl << "L:";
    for (int i = 0; i < n + m; ++i)
        cout << " " << L[i];
    delete[]A;
    delete[]B;
    delete[]L;
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2022, 01:59
Ответы с готовыми решениями:

Объединить два отсортированных массива в один
Вечное слияние упорядоченного разума В этой задаче вам необходимо реализовать функцию merge. Эта функция принимает на вход 55...

Объединить два отсортированных массива в один
Даны два файла вещественных чисел с именами S1 и S2, элементы которых упорядочены по возрастанию. Объединить эти файлы в новый файл с...

Объединить два массива отсортированных по убыванию
Дана массивы a и b. Элементы массива a отсортированы в порядке убывания, массива b – в порядке возрастания. Образовать из этих массивов...

2
0 / 0 / 0
Регистрация: 20.11.2022
Сообщений: 4
23.11.2022, 01:21  [ТС]
всем доброй ночи, мне задали задание, а я нач. програмист, нужно получить массив С(n+m) путем слияния массивов А(n) и В(m); массивы
А(n) и В(m) предварительно упорядочить по росту, методом пузирька, подсчитать количество принадлежащих элементов
условии: А(и) > В(и).
нашла такой код, а дальше незнаю (

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 <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int n, m, h, * A, * B, * L;
    cout << "N:"; cin >> n;
    cout << "M:"; cin >> m;
    A = new int[n];
    cout << "A:";
    for (int i = 0; i < n; ++i)
    {
        A[i] = rand() % 101;
        cout << " " << A[i];
    }
    B = new int[m];
    cout << endl << "B:";
    for (int i = 0; i < m; ++i)
    {
        B[i] = rand() % 101;
        cout << " " << B[i];
    }
    L = new int[n + m];
    for (int i = 0; i < n; ++i)
        L[i] = A[i]+B[i];
    for (int i = 0; i < m; ++i)
        L[n + i] = B[i]+A[i];
    cout << endl << "L:";
    for (int i = 0; i < n + m; ++i)
        cout << " " << L[i];
    delete[]A;
    delete[]B;
    delete[]L;
    return 0;
}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
23.11.2022, 04:24
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>
#include <random>
#include <chrono>
 
template<typename T>
void swap(T &a, T &b) {
    T tmp = std::move(a);
    a = std::move(b);
    b = std::move(tmp);
}
 
template<typename Iterator>
void doBubbleSort(Iterator begin, Iterator end) {
    for (Iterator i = begin; i != end - 1; ++i) {
        for (Iterator j = i + 1; j != end; ++j) {
            if (*j < *i) {
                swap(*i, *j);
            }
        }
    }
}
 
template<typename Iterator, typename OutputIterator>
OutputIterator copy(Iterator begin, Iterator end, OutputIterator output) {
    while (begin != end) {
        *output++ = *begin++;
    }
    return output;
}
 
template<typename Iterator1, typename Itreator2, typename OutputIterator>
OutputIterator mergeSorted(Iterator1 begin1, Iterator1 end1,
                           Itreator2 begin2, Itreator2 end2, OutputIterator output) {
    // пока не закончился первй диапазон
    for (; begin1 != end1; ++output) {
        // если закончился второй диапазон, копируем в выход остатки первого
        if (begin2 == end2) {
            return copy(begin1, end1, output);
        }
        // копируем меньшее значение из первых значений двух диапазонов и сдвигаем соотвествующее
        // первое значение вперёд
        if (*begin2 < *begin1) {
            *output = *begin2;
            ++begin2;
        } else {
            *output = *begin1;
            ++begin1;
        }
    }
    // копируем остатки второго диапазона в выход
    return copy(begin2, end2, output);
}
 
template<typename Iterator, typename Generator>
void generate(Iterator begin, Iterator end, Generator generator) {
    while (begin != end) {
        *begin++ = generator();
    }
}
 
template<typename Iterator>
void print(Iterator begin, Iterator end) {
    while (begin != end) {
        std::cout << *begin++ << ' ';
    }
    std::cout << std::endl;
}
 
template<typename Iterator1, typename Iterator2, typename Predicate>
std::size_t countIf(Iterator1 begin1, Iterator1 end1, Iterator2 begin2, Iterator2 end2,
                          Predicate predicate) {
    std::size_t result = 0;
    for (; begin1 != end1 && begin2 != end2; ++begin1, ++begin2) {
        if (predicate(*begin1, *begin2)) {
            ++result;
        }
    }
    return result;
}
 
int main() {
    std::default_random_engine re(std::chrono::system_clock::now().time_since_epoch().count());
    std::uniform_int_distribution<int> di(0, 100);
    auto randomValue = [&]() { return di(re); };
 
    std::size_t sizeA, sizeB;
    std::cin >> sizeA >> sizeB;
 
    int *a = new int[sizeA];
    generate(a, a + sizeA, randomValue);
    print(a, a + sizeA);
    doBubbleSort(a, a + sizeA);
    print(a, a + sizeA);
 
    int *b = new int[sizeB];
    generate(b, b + sizeB, randomValue);
    print(b, b + sizeB);
    doBubbleSort(b, b + sizeB);
    print(b, b + sizeB);
 
    std::size_t sizeC = sizeA + sizeB;
    int *c = new int[sizeC];
    mergeSorted(a, a + sizeA, b, b + sizeB, c);
    print(c, c + sizeC);
 
    auto less = [](int a, int b) { return a > b; };
    std::cout << countIf(a, a + sizeA, b, b + sizeB, less) << std::endl;
 
    delete[] a;
    delete[] b;
    delete[] c;
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2022, 04:24
Помогаю со студенческими работами здесь

Объединить два отсортированных односвязных списка
Даны два односвязных списка. Первый отсортирован по возрастанию, а второй по убыванию. Сформировать новый список, отсортированный по...

Слить два отсортированных массива в 3й(с сортированием)
Нужно слить 2 отсортированных массива в 3й , при этом отсортировав и его, в отдельной функции , с последующим выводом массива в пределах...

Объединить содержимое двух отсортированных файлов с сохранением сортировки
Создать два файла А и В. Компонентами файлов являются целые числа, которые следует упорядочить по возрастанию. Объединить содержимое...

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

Объединить два массива
Пользователь вводит 2 массива из 4 элементов каждый, программа копирует оба массива(сначала 1, потом второй) в третий массив из 8...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru