Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 95
1

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

01.09.2017, 01:49. Показов 1141. Ответов 9
Метки нет (Все метки)

Здравствуйте, форумчане.
Помогите пожалуйста сделать реализацию программы, задача:
Написать программу, которая объединяет два упорядоченных по возрастанию массива в один, упорядоченный по убыванию.
У меня получилось следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <algorithm>
#include <iostream>
#include <iterator>
 
template <typename T, size_t M, size_t N>
void Foo(const T (&A)[M], const T (&B)[N], T (&C)[M + N])
{
    std::merge(std::cbegin(A), std::cend(A), std::cbegin(B), std::cend(B), std::rbegin(C));
}
 
int main()
{
    int C[5];
    Foo({1, 4}, {2, 3, 5}, C);
    for (const auto x : C)
        std::cout << x << " ";
}
Помогите, пожалуйста, исключить эти шаблоны и сделать что-то более реальное. Например ввод с клавиатуры и указание размеров массивов? Спасибо!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2017, 01:49
Ответы с готовыми решениями:

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

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

Объединить два упорядоченных по возрастанию массива в один. Нужны комментарии
#include &lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; /* run this program using the console...

Объединить два упорядоченных по возрастанию массива так что бы результат был упорядоченным по убыванию
Дано два массива А и В размера 5, элементы которых идут по возрастанию. Объединить эти массивы...

9
Рэмбо комнатный
102 / 102 / 99
Регистрация: 05.03.2017
Сообщений: 509
01.09.2017, 02:08 2
PilotDrowa, без алгоритмов сойдет?

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
unsigned int size1, size2;
cin >> size1 >> size2;
int* array1=new int[size1];
int* array2=new int[size2];
////действия с ними
int* array3=new int[size1+size2];
unsigned int k = size1;
for (unsigned int i = 0; i < size1 ; i++ )
{
   array3[i]=array1[i];
}
for (unsigned int i = 0; i < size2 ; i++ )
{
   array3[k]=array2[i];
   k++;
}
delete[] array1; delete[] array2;
0
1464 / 1172 / 551
Регистрация: 08.01.2012
Сообщений: 4,517
01.09.2017, 05:18 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
void print(int *a,int sz)
{
    for(int i=0; i<sz; i++) 
     cout<<a[i]<<" ";
    cout<<endl;
}
void main(int argc,char **argv)
{
    int sz1,sz2;
    cout<<"size1 size2:";
    cin>>sz1>>sz2;
    int *a1=new int[sz1];
    int *a2=new int[sz2];
    srand(unsigned(time(0)));
    for(int i=0; i<sz1; i++) a1[i]=rand()%100;
    for(int i=0; i<sz2; i++) a2[i]=rand()%100;
    sort(a1,a1+sz1);
    sort(a2,a2+sz2);
    print(a1,sz1);
    print(a2,sz2);
    int *a3=new int[sz1+sz2];
    int *p=a3;
    int n1=sz1,n2=sz2;
    while(n1 || n2)
        if(n1 && n2)
            if(a1[n1-1]>a2[n2-1]) *p++=a1[--n1];
            else
            if(a2[n2-1]>a1[n1-1]) *p++=a2[--n2];
            else
            {
                *p++=a1[--n1];
                *p++=a2[--n2];
            }
        else
            if(n1) *p++=a1[--n1];
            else *p++=a2[--n2];
    print(a3,sz1+sz2);
    delete[] a1;
    delete[] a2;
    delete[] a3;
0
802 / 532 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
01.09.2017, 07:01 4
GeFacle, почему алгоритмы не используешь?
0
42 / 52 / 33
Регистрация: 15.12.2015
Сообщений: 199
01.09.2017, 07:12 5
Цитата Сообщение от PilotDrowa Посмотреть сообщение
исключить эти шаблоны и сделать что-то более реальное
Имеется ввиду не использовать stl или не использовать самописные шаблоны?
Массивы должны быть определенного или произвольного типа?

Немного модифицированный пример с http://en.cppreference.com/w/cpp/algorithm/merge
(на мой взгляд достаточно красивый вариант)

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
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <random>
#include <functional>
 
int main()
{
    // fill the vectors with random numbers
    std::random_device rd;
    std::mt19937 mt(rd());
    std::uniform_int_distribution<> dis(0, 9);
 
    std::vector<int> v1(10), v2(10);
    std::generate(v1.begin(), v1.end(), std::bind(dis, std::ref(mt)));
    std::generate(v2.begin(), v2.end(), std::bind(dis, std::ref(mt)));
 
    // sort
    std::sort(v1.begin(), v1.end(), std::less<int>());
    std::sort(v2.begin(), v2.end(), std::less<int>());
 
    // output v1
    std::cout << "v1 : ";
    std::copy(v1.begin(), v1.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
 
    // output v2
    std::cout << "v2 : ";
    std::copy(v2.begin(), v2.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
 
    // merge
    std::vector<int> dst;
    std::merge(v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter(dst));
    std::sort(dst.begin(), dst.end(), std::greater<int>());
 
    // output
    std::cout << "dst: ";
    std::copy(dst.begin(), dst.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
}
0
Рэмбо комнатный
102 / 102 / 99
Регистрация: 05.03.2017
Сообщений: 509
01.09.2017, 07:46 6
Ferrari F1, потому что не вникал пока что в них, сейчас мне чот сложно
0
802 / 532 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
01.09.2017, 07:57 7
GeFacle, нужно учить азы, но углубленнее)
0
GbaLog-
01.09.2017, 10:17
  #8

Не по теме:

Цитата Сообщение от PilotDrowa Посмотреть сообщение
У меня получилось следующее
Цитата Сообщение от PilotDrowa Посмотреть сообщение
Помогите, пожалуйста, исключить эти шаблоны и сделать что-то более реальное. Например ввод с клавиатуры и указание размеров массивов?
после этих слов я что-то сомневаюсь, что это у вас получилось.

0
Рэмбо комнатный
102 / 102 / 99
Регистрация: 05.03.2017
Сообщений: 509
01.09.2017, 11:08 9
GbaLog-, тогда уж
Цитата Сообщение от PilotDrowa Посмотреть сообщение
У меня получилось получить следующее:
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 95
01.09.2017, 11:48  [ТС] 10
Цитата Сообщение от GbaLog- Посмотреть сообщение

Не по теме:



после этих слов я что-то сомневаюсь, что это у вас получилось.

Раскусили, проклатье!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2017, 11:48

Создать два упорядоченных по возрастанию файла. Объединить их в упорядоченный по убыванию файл
Создать два упорядоченных по возрастанию файла. Объединить их в упорядоченный по убыванию файл...

Дано два упорядоченных целочисленных массива. Объединить их в один упорядоченный.
Дано два упорядоченных целочисленных массива. Объединить их в один упорядоченный. помогите...

Объединить два упорядоченных целочисленных массива в один упорядоченный массив
Даны два упорядоченных массива целых чисел М1 и М2. Объединить их в один упоря-доченный массив....

Объединить два упорядоченных списка в один, тоже упорядоченный
Program spisoc1; Type spis=^spisoc; spisoc=record inf:integer; link:spis; end;...


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

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

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