C++ Дан массив a a из n n элементов. Перенесите последний элемент массива ** место k k...

0 голосов
315 просмотров

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


Информатика (124 баллов) | 315 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

#include
#include
#include
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) {<br> for (int i = 0; i <= n; i++) {<br>  a[i] = uid(gen); cout << a[i] << " ";<br> }
 cout << endl; cin >> k;
 if (k <= n) {<br>  replace(a, n, k - 1);
  for (int i = 0; i <= n; i++) {<br>   cout << a[i] << " "; }<br> } else {
  cout << "Error" << endl;<br> }
}else {
 cout << "Error!" << endl;<br>}
delete[] a;
return 0;
}

(4.2k баллов)