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

Собрать элементы массива A, которые не включаются в массив B

12.03.2019, 23:13. Показов 4875. Ответов 7

Студворк — интернет-сервис помощи студентам
Тема: Указатели.

Понимаю, что сейчас люди будут говорить о том, что не читаешь другие темы, но похожей не нашёл, только потому, что мне нужно решить без new .
В этом и заключается вся сложность. Есть понимание о том, как проще и быстрее, но вот без new не имею представления.
Так что прошу не кидаться камнями. Ибо в Интернете достаточно ответов о ток, как решить, но вот нужного нет.

Даны два массива: А[M] и B[N] (M и N вводятся с клавиатуры). Необходимо создать третий массив минимально возможного размера, в котором нужно собрать элементы массива A, которые не включаются в массив B, без повторений.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2019, 23:13
Ответы с готовыми решениями:

Создать третий массив, в котором собрать элементы массива A, которые не включаются в массив B
4. Даны два массива: А и B (M и N вводятся с клавиатуры). Необходимо создать третий массив минимально возможного размера, в котором нужно...

Необходимо собрать в третьем массиве, элементы массива А, которые не включаются в массив B
Необходимо собрать в третьем массиве, элементы массива А, которые не включаются в массив B. Помогите с решением, мое выдает массив А и все,...

Создать третий массив, в котором нужно собрать элементы массива A, которые не включаются в массив B
Даны два массива: А и B (M и N вводятся с клавиатуры). Необходимо создать третий массив минимально возможного размера, в котором нужно...

7
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
13.03.2019, 00:09
Если нельзя new то остается либо malloc либо std::vector.
1
1 / 1 / 0
Регистрация: 18.07.2016
Сообщений: 51
13.03.2019, 00:40  [ТС]
Нет, такое тоже запрещено. Не проходили на данной стадии.
Преподаватель вот такой вариант предложил

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
#include<iostream>
 
typedef int buf_t[1024];
 
typedef buf_t* bufarr_t[1024];
 
void allocate(bufarr_t* bufarr, int m, int n, int q, int i)
 
{
 
buf_t buffer = { 0 };
 
(*bufarr)[i] = &buffer;
 
if (m <= 0 && n <= 0 && q <= 0)
 
{
 
(*bufarr)[i] = NULL;
 
return;
 
}
 
else if (m <= 0 && n <= 0) {
 
return allocate(bufarr, 0, 0, q - 1024, i + 1);
 
}
 
else if (m <= 0) {
 
return allocate(bufarr, 0, n-1024, q, i + 1);
 
}
 
else {
 
return allocate(bufarr, m-1024, n, q, i + 1);
 
}
 
}
 
int main()
 
{
 
bufarr_t bufarr = { nullptr };
 
int m = 0, n = 0, q = 0;
 
std::cin >> m;
 
std::cin >> n;
 
q = m + n;
 
allocate(&bufarr, m, n, q, 0);
 
system("pause");
 
return 0;
 
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
13.03.2019, 01:02
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
 
int main(int argc, char* argv[])
{
    int A[]={1,2,3,4,5,6},
    szA=sizeof(A)/sizeof(*A),
    B[]={25,2,33,44,5,6},
    szB=sizeof(B)/sizeof(*B);
 
set<int> A_set(A, A+szA), B_set(B, B+szB), C_set;  
set_difference(A_set.begin(), A_set.end(),
                    B_set.begin(), B_set.end(), inserter(C_set, C_set.begin()));
ostream_iterator<int> osit(cout, " ");
copy(C_set.begin(), C_set.end(), osit);
 
cout<<endl;
cin.get();
return 0;
}
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
13.03.2019, 01:29
Цитата Сообщение от Blacit Посмотреть сообщение
Нет, такое тоже запрещено. Не проходили на данной стадии.
Тогда, замените malloc на notMalloc.
C++
1
2
3
4
5
6
7
8
9
10
11
void*notMalloc(std::size_t size)
{
    const std::size_t storageSize=1<<20;
    static unsigned char storage[storageSize];
    static unsigned char*freeStorage=storage;
    static unsigned char*const endStorage=storage+storageSize;
 
    return freeStorage+size<=endStorage?
                (freeStorage+=size)-size:
                nullptr;
}
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
13.03.2019, 02:01
Цитата Сообщение от Blacit Посмотреть сообщение
нужно решить без new
Если вы имеете в виду что вам нужно реализовать свою кучу на который вы будете выделять память под выполняющиеся функции, тогда вам надо копать в сторону https://en.cppreference.com/w/cpp/memory/allocator
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
13.03.2019, 03:33
Цитата Сообщение от outoftime Посмотреть сообщение
Если вы имеете в виду что вам нужно реализовать свою кучу на который вы будете выделять память под выполняющиеся функции, тогда вам надо копать в сторону https://en.cppreference.com/w/cpp/memory/allocator
Скорее, в сторону Buddy memory allocation и Искусства Программирования Дональда Кнута. А копать в сторону std::allocator не надо, по крайней мере пока он не перестанет крашится при попытке удалить полиморфный объект Child через Parent* указатель (и да, через new/delete операции в коде ниже работают прекрасно).
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
class FirstParent
{
public:
    virtual~FirstParent(){}
    int x;
};
 
class SecondParent
{
public:
    virtual~SecondParent(){}
    int y;
};
 
class Child:public SecondParent,public FirstParent
{
public:
};
 
int main()
{
    //аллокатор базового типа FirstParent, который не умеет создавать потомков FirstParent
    std::allocator<FirstParent> baseAllocator;
    //аллокатор умеющий делать потомка Child
    std::allocator<Child> childAllocator(baseAllocator);
    //делаем ребеночка и сохраняем в указатель на БАЗОВЫЙ класс. Потому что полиморфизм
    FirstParent*child=childAllocator.allocate(1);
    //В childAllocator этот указатель не сунешь, значит суем в baseAllocator
    //Опс, программа крашится
    baseAllocator.deallocate(child,1);
    return 0;
}
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
13.03.2019, 14:42
Renji, кажись я видел несколько лет тому назад презентацию проэкта от одного из русских разрабов из яндекса, который пилил БД на "матрасе" (так назвал стуктуру данных), который похожим образом делил память, но из-за небольших размеров позволял полностью использовать возможности кеша процессора. Давно это было, так сразу больше и не вспомню.

Добавлено через 8 минут
Renji, https://github.com/evanw/buddy-malloc
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2019, 14:42
Помогаю со студенческими работами здесь

Собрать в новом динамическом массиве элементы массива A, которые не включаются в массив B, без повторений
Я понимаю что может задам глупый вопрос ,но мне нужна ваша помощь. Вот условие задачи ://Даны два массива : А и B(M и N вводятся с...

Собрать элементы массива А, которые не включаются в В
Даны два массива : А и B. Необходимо создать третий массив, в котором нужно собрать элементы массива A, которые не включаются в B; Ну...

Указатель. Создать массив, в котором собраны элементы массива A, которые не включаются в массив B, без повторений.
Даны два массива: А и B (M и N вводятся с клавиатуры). Необходимо создать третий массив минимально возможного размера, в котором нужно...

Создать новый массив С, в котором элементы массива A, которые не включаются в B
Даны два массива : А и B. Необходимо создать третий массив, в котором нужно собрать:Элементы массива A, которые не включаются в B. выполняю...

Собрать элементы массива A, которые не встречаются в B
Даны два массива: А и B . Образовать третий массив минимального возможного размера, в котором собрать: Элементы массива A, которые не...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты 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 и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru