C++
Дан массив
a
a
из
n
n
элементов. Перенесите последний элемент массива на место
k
k
-го элемента. При этом
k
k
-й,
(k+1)
(k+1)
-й, ... , предпоследний элементы сдвинуть вправо на 1 позицию.
Формат входных данных
С клавиатуры вводится натуральное число
n
n
(
n≤100
n≤100
) — размер массива. Во второй строке вводятся
n
n
элементов массива через пробел. Все элементы целые и не превосходят по модулю
100
100
. В последней строке вводится одно натуральное число
k
k
(1≤k (1≤k .
Формат выходных данных
Необxодимо вывести измененный массив.
Примеры
входные данные
выходные данные
5
4 5 3 1 2
2
4 2 5 3 1
Answers & Comments
#include <random>
#include <ctime>
using namespace std;
mt19937 gen(time(0));
uniform_int_distribution<> uid(0, 19);
void replace(int *a, int n, int k)
{
int last = a[n];
for (int i = n - 1; i >= k; i--) {
a[i + 1] = a[i];
}
a[k] = last;
}
int main()
{
int n = 0, k = 0;
cin >> n;
int *a = new int[n];
if (n <= 100) {
for (int i = 0; i <= n; i++) {
a[i] = uid(gen); cout << a[i] << " ";
}
cout << endl; cin >> k;
if (k <= n) {
replace(a, n, k - 1);
for (int i = 0; i <= n; i++) {
cout << a[i] << " "; }
} else {
cout << "Error" << endl;
}
} else {
cout << "Error!" << endl;
}
delete[] a;
return 0;
}