21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708

Как склеить два динамических массива

28.01.2020, 17:27. Показов 6465. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
int *a = new int [4];
int *b = new int [10];
В конец массива а дописать b, не используя третьего массива. Не подскажите как лучше?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2020, 17:27
Ответы с готовыми решениями:

Как объединить два динамических массива
,к примеру 1 2 3 5 и 4 5 7 8 9 на выходе 1 2 3 4 5 7 8 9

Как максимально быстро сложить два динамических одномерных массива? SSE?
Всем привет! Нужно максимально быстро сложить поэлементно два байтовых массива. Есть: unsigned char *buf1; unsigned char *buf2; ...

Два динамических массива в конструкторе класса
Доброго времени суток Вам!) Есть такая проблема, ни как не могу создать сразу два динамических массива в классе . Один у меня получился: ...

44
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
30.01.2020, 20:43
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
то есть фиксирую, программа работает. Когда динамически, то повреждается куча. Что делать?
А какая связь между lengthIN и x*sizeblocks?
И - там, наверное квадратные скобки надо использовать new unsigned char[x*sizeblocks]; new unsigned char[lengthIN]
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
30.01.2020, 21:04  [ТС]
oleg-m1973, lengthIN длина входного массива, который разбивается на икс блоков.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
30.01.2020, 21:11
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, lengthIN длина входного массива, который разбивается на икс блоков.
А выходной массив, dynamic, разве не должен быть размером lengthIN, вместо x*sizeblocks?
И покажи функцию funcXOR
0
Just Do It!
 Аватар для XLAT
4220 / 2683 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
30.01.2020, 21:39
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
а в чем разница???
не понял.

с этим что?
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
Когда динамически, то повреждается куча.
код ведёт себя ИНДЕНТИЧНО?
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
31.01.2020, 00:08  [ТС]
oleg-m1973, [1,3,5,7,8,932,67,43] -> размер блока равен трём и выбираем большее число в каждом блоке -> [5, 932,67]
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.01.2020, 09:40
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, [1,3,5,7,8,932,67,43] -> размер блока равен трём и выбираем большее число в каждом блоке -> [5, 932,67]
Где-то я уже это видел - Распараллеливание
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
31.01.2020, 09:41  [ТС]
oleg-m1973, да но вот почему у меня при статичном массиве работает и записывает все корректно и верно, а когда динамически выделяю, идёт по одному месту
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.01.2020, 09:44
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, да но вот почему у меня при статичном массиве работает и записывает все корректно и верно, а когда динамически выделяю, идёт по одному месту
Я правильно понимаю, что в той задаче тебе нужно сохранить локальные максимумы, которые я сделал printf, в массиве?
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
31.01.2020, 10:04  [ТС]
oleg-m1973, склеить полученные числа в массив, потом его бить на блоки и в блоках находить максимум и склеивать, пока не останется один элемент. А со стеком разобрался, там размер меньше выделял, чем нужно)
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.01.2020, 10:11
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, склеить полученные числа в массив, потом его бить на блоки и в блоках находить максимум и склеивать, пока не останется один элемент. А со стеком разобрался, там размер меньше выделял, чем нужно)
Т.е. всё теперь работает?
1
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
31.01.2020, 11:58  [ТС]
Да, но вот теперь ошибка в разбиении и склеиваний блоков;(
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.01.2020, 12:03
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
Да, но вот теперь ошибка в разбиении и склеиваний блоков;(
Итак, я правильно понимаю - тебе нужно выделить новый массив и заполнить его максимальными значениями из блоков предыдущего массива?
Если да, то что там склеивать?
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
31.01.2020, 12:26  [ТС]
oleg-m1973, полученные элементы записать в новый массив, дальше его пробежать по блокам и выделить максимальные элементы и записать их в массив. И так далее пока не останется массив из одного элемента. Я под это дело выделяю динамическиий массив. Я исходный массив разбиваю и нахожу максимальные элементы по блокам, записываю во временный динамический, потом как мне изменить размер исходного массива и в него скопировать результат, который будет лежать во временном?

Добавлено через 8 минут
oleg-m1973, я массив выделяю динамически с помощью malloc, хочу его зачистить с помощью free(array), у меня ошибка кучи...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.01.2020, 12:35
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, я массив выделяю динамически с помощью malloc, хочу его зачистить с помощью free(array), у меня ошибка кучи...
Склеивать там точно ничего не надо. Надо либо просто выделить массив нужного размера - n / 3, либо писать результат впрямо в исходный массив.
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
31.01.2020, 12:39  [ТС]
oleg-m1973, я после работы с динамическим массивом, хочу его удалить, у меня выскакивает ошибка кучи. Что делать? Задаю массив через new
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.01.2020, 12:47
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, я после работы с динамическим массивом, хочу его удалить, у меня выскакивает ошибка кучи. Что делать? Задаю массив через new
C++
1
2
3
4
5
6
7
8
9
10
unsigned char *in = new unsigned char[lengthIN]; // считывается
unsigned char *dynamic = new unsigned char[(lengthIN / sizeblocks + 1) * sizeblocks];
 
 
auto *dst = dynamic;
for (auto it = in, end = in + lengthIN; it < end; it += sizeblocks)
    funcXOR(it, std::min(it + sizeblock, end), dst++);
 
delete[] in;
delete[] dynamic;
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
31.01.2020, 14:01  [ТС]
oleg-m1973, а можно подробнее объяснить с комментариями?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.01.2020, 14:09
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, а можно подробнее объяснить с комментариями?
Что именно непонятно?
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
31.01.2020, 15:34  [ТС]
oleg-m1973, dst- это указатель на массив? И сам цикл, как он работает...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.01.2020, 15:47
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, dst- это указатель на массив? И сам цикл, как он работает...
Насколько я понял, тебе нужно взять три элемента из входного массива, что то подситать по ним и записать результат, один элемен. в выходной массив. Соответственно, в каждой итерации цикла я перемещаю указатель входного массива it на три, а указатель выходного массива на один. Так, как размер входного массива может быть не кратен трём, я проверяю размер последнего блока - std::min(it + sizeblock, end)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.01.2020, 15:47

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

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

Как склеить два куска динамически выделенной памяти?
Есть такой код char *arr = (char *) malloc(1); char *plus = (char *) malloc(25); arr = memcpy(arr + 1, plus, 25); Вопрос: можно ли...

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

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


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

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

Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru