Другие языки программирования и технологии

Помогите решить, задача по с++

Sergei Tolstov
Sergei Tolstov
26
#include <iostream>
using namespace std;
void shift(int* box, int n) {
auto begin = box + n - 1;
auto next = begin - 1;
auto end = box - 1;
auto last = *begin;
while (next > end) {
*begin = *next;
--begin;
--next;
}
*begin = last;
}
int main() {
int box[100];
int n;
cin >> n;
if (n < 2 || n > 100) exit(0);
for (auto i = 0; i < n; ++i) {
cin >> box[i];
if (abs(box[i]) > 100) exit(0);
}
int k;
cin >> k;
if (k < 0 || k >= n) exit(0);
shift(box + k, n - k);
for (auto i = 0; i < n; ++i) cout << box[i] << ' ';
cout.put('\n');
system("pause");
}
Александр Большаков
Александр Большаков
70 531
Лучший ответ
#include <iostream>
#include <cassert> // для assert

int main()
{
  size_t n, k;
  std::cin >> n;
  int *arr = new int[n];
  for (size_t i = 0; i < n; ++i)
    std::cin >> arr[i];
  std::cin >> k;
  assert(k < n && n != 0);
  int tmp = arr[n-1];
  for (size_t i = n - 1; i > k; --i)
    arr[i] = arr[i-1];
  arr[k] = tmp;
  for (size_t i = 0; i < n; ++i)
    std::cout << arr[i] << " ";
  delete[] arr;
}