Другие языки программирования и технологии
Как вставить один массив в другой C, C++
даны два массива различной длины. Вставить второй массив между к-тым и (к+1)-ым элементами первого массива, не используя дополнительного массива.
Вставляем массив b длинной n в массив a, занятая часть которого имеет длину m. При этом общая длина массива a должны быть не меньше n + m (например, для увеличения длины массива можно использовать realloc).
// Сначала перемещаем хвост массива a
for (i = m - 1; i > k; --i) { a[i + n] = a[i]; }
// Потом вставляем массив b
for (i = 0; i < n; --i) { a[i + k + 1] = b[i]; }
// Сначала перемещаем хвост массива a
for (i = m - 1; i > k; --i) { a[i + n] = a[i]; }
// Потом вставляем массив b
for (i = 0; i < n; --i) { a[i + k + 1] = b[i]; }
нужна библиотека иострим и алгоритм
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int iArray_01[5]{1,2,3,4,5};
int iArray_02[9]{11,22,33,44,55,66,77,88,99};
copy(iArray_01, iArray_01 + 4, iArray_02 + 1);
for(unsigned int ui : iArray_02)
{
cout << ui << " " << flush;
}
return a.exec();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int iArray_01[5]{1,2,3,4,5};
int iArray_02[9]{11,22,33,44,55,66,77,88,99};
copy(iArray_01, iArray_01 + 4, iArray_02 + 1);
for(unsigned int ui : iArray_02)
{
cout << ui << " " << flush;
}
return a.exec();
}
#include <iostream>
#include <windows.h>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
template<class T>
void Show(const T &);
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(time(0));
system("color 0A");
cout << "Введите длины массивов через пробел ";
size_t n1, n2;
cin >> n1 >> n2;
vector<int> v1(n1);
vector<int> v2(n2);
auto gen = []()
{
return -10 + rand() % 21;
};
generate(v1.begin(), v1.end(), gen);
generate(v2.begin(), v2.end(), gen);
cout << "Содержание 1 массива" << endl;
Show(v1);
cout << "Содержание 2 массива" << endl;
Show(v2);
cout << "Укажите индекс элемента (счёт от нуля) первого массива, после которого разместить второй массив ";
size_t ind;
cin >> ind;
size_t delta = 0;
for (const auto &t : v2)
{
v1.insert(v1.begin() + ind + ++delta, t);
}
cout << "Содержание слитого массива" << endl;
Show(v1);
system("pause");
return 0;
}
template<class T>
void Show(const T &v)
{
for (const auto &t : v)
{
cout << t << " ";
}
cout << endl;
}
#include <windows.h>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
template<class T>
void Show(const T &);
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(time(0));
system("color 0A");
cout << "Введите длины массивов через пробел ";
size_t n1, n2;
cin >> n1 >> n2;
vector<int> v1(n1);
vector<int> v2(n2);
auto gen = []()
{
return -10 + rand() % 21;
};
generate(v1.begin(), v1.end(), gen);
generate(v2.begin(), v2.end(), gen);
cout << "Содержание 1 массива" << endl;
Show(v1);
cout << "Содержание 2 массива" << endl;
Show(v2);
cout << "Укажите индекс элемента (счёт от нуля) первого массива, после которого разместить второй массив ";
size_t ind;
cin >> ind;
size_t delta = 0;
for (const auto &t : v2)
{
v1.insert(v1.begin() + ind + ++delta, t);
}
cout << "Содержание слитого массива" << endl;
Show(v1);
system("pause");
return 0;
}
template<class T>
void Show(const T &v)
{
for (const auto &t : v)
{
cout << t << " ";
}
cout << endl;
}
Похожие вопросы
- Вывести название массива с помощью char, C++
- помогите срочно надо Квадратные массивы тема: Двумерные массивы на языке C++
- динамический массив в Visual C++
- .помогите пожалуйста двумерный массив на языке c++
- Как определить размер массива в процессе ввода? C++
- Массив указателей в C++
- Помогите Задан массив Р(N).Переписать все его элементы,за исключением максимального и минимального в массив D.(язык C++)
- Массив как аргумент функции C++
- Как задать двумерный массив строк в C? Как его потом заполнять?
- взять из массива наибольший элемент c++. Возможно ли это? и как?