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

Добавление массива в массив

14.01.2021, 01:17. Показов 2697. Ответов 11

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста написать программу которая добавляет элементы первого массива в другой массив в рандомное место.

Вот вариант добавления числа, а как добавить массив я не знаю
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
#include <iostream>
#include<ctime>
using namespace std;
 
int main()
{
    srand(time(NULL));
 
    const int size = 5;
    int arr[size] = { 1, 2, 3, 4, 5 };
 
    int el = 7; // Вставляемый элемент
    int pos; //место вставки 
    //
    pos = 1 + rand() % 5;
    //
    int mas[size + 1];
 
    for (int i = 0; i < pos; i++)
        mas[i] = arr[i];
 
    mas[pos] = el;
 
    for (int i = pos + 1; i < size + 1; i++)
        mas[i] = arr[i - 1];
 
    for (int i = 0; i < size + 1; i++) // Вывод
        cout << mas[i] << ' ';
    cout << endl;
 
    system("PAUSE");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2021, 01:17
Ответы с готовыми решениями:

Добавление массива в многомерный массив
Есть два массива: 1-й двухуровневый массив Array( =&gt;Array( =&gt;'72', =&gt;'Пушкин' ), ...

Добавление в массив данных из другого массива
Аж позорно, но после 2 бессонных месяцев голова не думает и да я жертва QT там во всякие QVector всё добавляется, как по волшебству, но...

Одномерный массив. Добавление к элементов в начало массива
Одномерный массив.. добавление к элементов в начало массива

11
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
14.01.2021, 07:32
Цитата Сообщение от Girb Посмотреть сообщение
pos = 1 + rand() % 5;
Это ж даст от 1 до шести. А отсчет с нуля же идёт. Получается в одно место не вставится. А вообще по тому же принципу как с одним числом действуете. Просто нужно будет расширять массив (создавать новый и всё переносить не добавление) на количество элементов добавляемого массива. Рандомом точку входа выбрали и вставляется каждый элемент двигая родные элементы

Добавлено через 8 минут
Хм, почитал тут я подробнее про расширения массивов. Как бы способ есть, через realloc. Но немало говорят, что это и к утечкам может привести при неумении
0
Искусственный интеллект
 Аватар для NQUARE
112 / 82 / 34
Регистрация: 26.08.2020
Сообщений: 590
Записей в блоге: 1
14.01.2021, 08:02
Цитата Сообщение от Laborant666 Посмотреть сообщение
способ есть, через realloc
Плохая идея.
Да юзайте вы уже вектора наконец, чем они вас не устроили
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.01.2021, 08:49
Цитата Сообщение от Girb Посмотреть сообщение
Помогите пожалуйста написать программу которая добавляет элементы первого массива в другой массив в рандомное место
это делается на динамическом массиве с перевыделением памяти, но если Вас устраивает результат в виде третьего массива, пожалуйста
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>
using namespace std;
 
void Print (int *x, int N, char ch)
{
    cout << "Array " << ch << ":\n";
    for (int i = 0; i < N; i++)             
        cout << x[i] << " ";        
    cout << "\n";    
}  
 
int main()
{
    srand((int)time(0));
    const int n=5, m=3, k=n+m;
    int idx=0, p=0;
    int a[n] = { 1, 2, 3, 4, 5 };
    int b[m] = { 10, 20, 30 };    
    int c[k];   
    
    Print(a,n,'a');
    Print(b,m,'b');    
    
    idx=rand()%6;   
 
    for (int i = 0; i < idx; i++)    
        c[p++]=a[i];
 
    for (int i = 0; i < m; i++)    
        c[p++]=b[i];
 
    for (int i = idx; i < n; i++)
        c[p++] = a[i];
 
    Print(c,k,'c');   
    
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 31.10.2020
Сообщений: 28
14.01.2021, 11:14  [ТС]
можете показать как это на динамичном массиве релализовать ?

Добавлено через 36 секунд
Цитата Сообщение от Yetty Посмотреть сообщение
это делается на динамическом массиве с перевыделением памяти, но если Вас устраивает результат в виде третьего массива, пожалуйста
можете показать как это на динамичном массиве релализовать ?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.01.2021, 11:36
Girb,
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
#include <iostream>
using namespace std;
 
void Print (int *x, int N)
{    
    for (int i = 0; i < N; i++)             
        cout << x[i] << " ";        
    cout << "\n";    
}  
 
int main()
{
    srand((int)time(0));
    int n=5, m=3, k=n+m;
    int idx=0, p=0;
    
    int *a = new int[n] { 1, 2, 3, 4, 5 };
    int *b = new int[m] { 10, 20, 30 };    
    int *c = new int[k];
    
    cout << "Array a:\n";
    Print(a,n);
    cout << "Array b:\n";
    Print(b,m);    
    
    idx=rand()%6;   
 
    for (int i = 0; i < idx; i++)    
        c[p++]=a[i];
 
    for (int i = 0; i < m; i++)    
        c[p++]=b[i];
 
    for (int i = idx; i < n; i++)
        c[p++] = a[i];
        
    delete[]a;
    
    a=c;
    
    cout << "Array a after insert:\n"; 
    Print(a,k);
    delete[]b;
    delete[]c;
system("pause");
return 0;
}
1
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
14.01.2021, 16:53
Цитата Сообщение от NQUARE Посмотреть сообщение
Плохая идея.
Да вроде бы неплохая, главное не забывать чистить ненужные следы. А так да, лучше вектор, но подумал не стоит предлагать, раз автор сразу не решил идти через вектора - возможно не его уровень эти самые векторы
0
0 / 0 / 0
Регистрация: 31.10.2020
Сообщений: 28
15.01.2021, 01:21  [ТС]
Laborant666, Мне в задании нужно именно с динамическими массивами сделать. И еще поиск меньшего массива в том что больше алгоритмом прямого поиска. Не могли б мне в этом помочь ?
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
15.01.2021, 02:48
Цитата Сообщение от Girb Посмотреть сообщение
И еще поиск меньшего массива в том что больше алгоритмом прямого поиска. Не могли б мне в этом помочь ?
А чего тут помогать? Вставили один массив в другой по сути, как уже вам показали. А потом берете новый массив и сравниваете каждый индекс с первым индексом (который ноль) старого массива. При совпадении сдвигаетесь дальше и сравниваете уже со вторым индексом в старом массиве, при несовпадении - дальше листаете сравнивая с первым элементом (индекс наверное неправильно). Реализовать количество повторений можно простым счетчиком, Аля - если совпало count++, иначе count = 0; и всё. И листаете новый массив

Ну и если count == длине старого массива - 1, то значит массив найден. Ну и при таком условии можно записать i и будет место старого массива в новом начиная с mass[i-count] до mass[i]. Главное учесть тот факт, что в новом массиве может не оказаться старой строки. На этот счет нужно тоже отдельное условие. Ну а оно просто добавляется в ветку

if (count == length_first_mass-1)
Выводим индексы начала и конца вставленного массива в новом
else
Выводим что совпадений не найдено

Вот и всё

Добавлено через 4 минуты
Цитата Сообщение от Girb Посмотреть сообщение
алгоритмом прямого поиска
о, только заметил это уточнение. Я алгоритм из головы придумал только что, а прямой ли это поиск не знаю

Добавлено через 2 минуты
Girb, Алгоритм прямого поиска. Реализация на С++
Вот нашел тему с алгоритмом прямого поиска. По словам автора я вроде бы и придумал этот самый алгоритм.

Добавлено через 4 минуты
Как нибудь прикрутите себе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
for(int i = 0; i<length_mass; i++)
{
       if ( mass[i] == first_mass[count] )
       {
             count++;
 
             if ( count == (length_first_mass-1) )
             {
                      break;
                      count = i;
              }
 
        }
else
      count = 0;
}
 
 
if ( count == (length_first_mass-1) )
        cout << "mass start on " << count - (length_first_mass - 1)<< " index, end on " << count << " index\n\n";
else
        cout << "mass not found. Sorry";
Добавлено через 6 минут
всё, сами додумаете, а то весь код напишу..
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
15.01.2021, 12:04
del
0
Злостный нарушитель
 Аватар для Verevkin
10255 / 5680 / 1263
Регистрация: 12.03.2015
Сообщений: 26,359
15.01.2021, 13:08
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// вставка массива src длиной src_count элементов
// в динамический массив dest из dest_count элементов
// перед элементом с индексом index с перераспределением памяти
int* insert_buf(int* dest, unsigned dest_count, const int* src, unsigned src_count, const unsigned index)
{
  assert(index < dest_count + 1); // защита от кривых рук
  if (!src_count) return dest; // вставлять нечего
 
  int* temp = (int*)calloc(dest_count + src_count, sizeof(int)); // место под результат
 
  if (index)
    memmove(temp, dest, sizeof(int) * index); // голова массива
 
  memmove(temp + index, src, sizeof(int) * src_count); // вставка куска данных
 
  if (index != dest_count)
    memmove(temp + index + src_count,
            dest + index,
            sizeof(int) * (dest_count - index)); // хвост массива
 
  free(dest); // удаление старого массива
  return temp; // результат
}
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
15.01.2021, 16:34
Цитата Сообщение от Verevkin Посмотреть сообщение
calloc
Автору в начале предлагался путь векторов или путь calloc\realloc. Что-то он там отмел идею
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2021, 16:34
Помогаю со студенческими работами здесь

Двумерный массив. Добавление к элементов в начало массива
двумерный массив. добавление к элементов в начало массива

Добавление в массив недостающих данных из другого массива
Здравствуйте! Имеется двумерный массив, состоящий из полей: дата, описание и время выполнения. Имеется одномерный массив, состоящий...

Добавление элемента в динамический массив - как описать проверку необходимости расширения массива
Уважаемые форумчане. помогите не могу реализовать добавление элемента в дин.массив. - не могу описать проверку необходимости расширения...

Добавление массива в многомерный массив (не элемента в многомерный массив)
Доброго времени суток уважаемые форумчане! Столкнулся с такой проблемой: требуется в многомерный массив добавить другой ассоц. массив...

Сделать добавление элемента в массив и удаление элемента из массива используя STL
Всем привет. Помогите пожалуйста написать. Нужно использовать STL. Необходимо сделать добавление элемента в массив и удаление элемента из...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru