Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740

Объединить 2 массива в один, в котором все числа идут по убыванию

09.06.2014, 22:56. Показов 2579. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Мне нужно объединить 2 массива в один, в котором все числа идут по убыванию. Вот подробности задачи.

Текстовый файл merge.dat содержит четыре строки. В первой строке записано натуральное число N (1 ≤ N ≤ 100 000) — количество дуболомов в первой шеренге.

Вторая строка содержит N натуральных чисел, записанных через пробел. Числа идут в невозрастающем порядке. Каждое число лежит в диапазоне от 1 до 1 000 000 000.

В третьей строке записано натуральное число M (1 ≤ M ≤ 100 000) — количество дуболомов во второй шеренге.

Четвертая строка содержит M натуральных чисел, записанных через пробел. Числа идут в невозрастающем порядке. Каждое число лежит в диапазоне от 1 до 1 000 000 000.

Формат выходного файла merge.sol

Текстовый файл merge.sol должен содержать N+M чисел, идущих в невозрастающем порядке. Каждое число — это рост соответствующего дуболома из первой или из второй шеренги. Каждое число должно выводиться в отдельную строку.

У меня есть предположения, что раз числа идут в невозрастающем порядке, то 2 массива нужно сначала отсортировать по убыванию, а потом слить вместе процедурой слияния.
Я так понимаю, что для слияния нужно использовать этот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
template<class T> void Merge(T const *const A, int const nA,
                             T const *const B, int const nB,
                             T *const C)
{ //Выполнить слияние массива A, содержащего nA элементов,
  //  и массива B, содержащего nB элементов.
  //  Результат записать в массив C.
 
    int a(0), b(0); //Номера текущих элементов в массивах A и B
 
    while( a+b < nA+nB ) //Пока остались элементы в массивах
    {
        if( (b>=nB) || ( (a<nA) && (A[a]<=B[b]) ) )
        { //Копирую элемент из массива A
            C[a+b] = A[a];
            ++a;
        } else { //Копирую элемент из массива B
            C[a+b] = B[b];
            ++b;
        }
    }
}
Скажите, этот код подходит? Если да, то как изменить его, чтоб числа в массиве С шли по убыванию?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.06.2014, 22:56
Ответы с готовыми решениями:

Определите процедуру p (х,у),которая создает массив, в котором сначала идут все положительные числа исходного, а потом все остальные
определите процедуру p (х,у),которая для данного массива х создает массив у,состоящий из элементов массива х ,но переставленныхчто сначала...

Сформировать второй массив, в котором сначала идут все элементы первого массива, кратные 5, а затем все остальные
1 / Дан одномерный массив из 30 элементов. Сформировать второй массив, в котором сначала идут все элементы первого массива, кратные 5, а...

Объединить два упорядоченных по возрастанию массива в один, упорядоченный по убыванию
Здравствуйте, форумчане. Помогите пожалуйста сделать реализацию программы, задача: У меня получилось следующее: #include...

24
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.06.2014, 17:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Та же ошибка.
И? Вопрос в чём? Отчего возникает такая ошибка? Ответ:
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
HEAP CORRUPTION DETECTED
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
10.06.2014, 17:19
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Так мне нужно long long, так как
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Каждое число лежит в диапазоне от 1 до 1 000 000 000.
ну и зачем тебе long long ???
диапазон числа int от -2147483648 до 2147483647
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
int *a = new int[n];
выделяем память под int
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
scanf("%lld", &a[i]);
вводим long long
ниче что он в два раза длиннее?
в массиве каша
2
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
10.06.2014, 17:23  [ТС]
alsav22, Я не понял вас. Во второй программе я ввожу размер массива, элементы массива и массив потом сортируется алгоритмом слияния. После ввода элементов массива и нажатия Enter выводит ошибку
Цитата Сообщение от alsav22 Посмотреть сообщение
HEAP CORRUPTION DETECTED
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.06.2014, 17:25
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Я не понял вас.
Странно, что не поняли...
Запись за границу памяти (j не должно быть равно last):
C++
1
2
3
4
5
6
7
8
int *mas=new int[last];
...
for (j = first; j <= last; j++)
{
    ....
    mas[j] = 
...
}
Чтение оттуда же:
C++
1
2
3
4
for (j = first; j <= last; j++)
{
      A[j] = mas[j];
     ...
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
10.06.2014, 17:32  [ТС]
ValeryS, alsav22, Спасибо вам. И действительно, все дело было в long long.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2014, 17:32

Сформировать массив, в котором сначала идут все элементы заданного массива, кратные 5, а затем - остальные...
Дан одномерный массив из 30 элементов. Сформировать второй массив, в котором сначала идут все элементы первого массива, кратные 5, а затем...

Получить из массива новый в котором сначала идут положительные числа, затем нули и потом отрицательные
Дан массив Х(N). Получить новый массив Y(N), такой, что в нем сначала идут положительные числа, затем нулевые, и затем отрицательные из X. ...

Массив: Вывести массив, где сначала идут все числа > 0 исходного массива, а все отрицательные числа заменить 0...
Помогите пожалуйста написать программу, где надо сначала создать 8-значный массив, а потом вывести другой , где сначала будут все...

Объединить два двумерных массива размерностью N*N в один, так, чтобы все строки первого массива стали чётными
Объединить два двумерных массива размерностью N*N в один, так, чтобы все строки первого массива стали чётными в новом массиве,а строки...

Объединить элементы 2-х массивов в один массив, содержащий все различные числа
Помогите пожалуйста составить программу: Даны 2 последовательности из целых чисел: a1, ..., an и b1, ..., bm. Объединить элементы этих...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 25.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru