C/C++

Программирование, СИ++ Не понимаю как задачу сделать

Пользователем вводится массив размером [0,100]; элементы массива [-100,100]; также число start и end
(оба) [0,100];
Начиная с элемента с индексом start до элемента с индексом end (включительно) добавить после каждого элемента по одному элементу, дублирующего предыдущий. Вывести полученный массив на экран.
Я новичок просто
Нарисуй схему
Игорь Королёв
Игорь Королёв
68 141
Лучший ответ
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
size_t index(const char* msg) {
cout << msg;
size_t value;
cin >> value;
return value;
}
int main() {
uniform_int_distribution<> uid(-100, 100);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
size_t n = 100;
auto box = new int[n];
generate(box, box + n, rand);
auto show = [](int x) { cout << setw(5) << x; };
for_each(box, box + n, show);
puts("");
auto start = index("Start: ");
auto end = index("End: ");
if (!start || start >= n || end > n) exit(0);
auto nn = end - start + n + 1U;
auto tmp = new int[nn];
auto i = 0U;
auto j = 0U;
do {
tmp[i] = box[j];
++i;
++j;
} while (j < start);
do {
tmp[i + 1] = box[j - 1];
tmp[i] = box[j];
i += 2;
++j;
} while (j <= end);
do {
tmp[i] = box[j];
++i;
++j;
} while (i < nn);
delete[] box;
box = new int[nn];
copy(tmp, tmp + nn, box);
n = nn;
delete[] tmp;
for_each(box, box + n, show);
puts("");
delete[] box;
system("pause > nul");
}
Используй vector и после ввода
for(i=start;i<=end*2;i+=2)data.insert(i,data[i]);
Сергей Усович
Сергей Усович
61 796