Advertisement
Misha_

Функция "Циклический сдвиг"

May 31st, 2018
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void shift(int *data, int n, int k) {
  5.     if (k > 0)
  6.         for (int i = 0; i < k; ++i) {
  7.             int tmp = data[n-1];
  8.             for (int i = n-1; i > 0; --i)
  9.                 data[i] = data[i-1];
  10.             data[0] = tmp;
  11.         }
  12.     if (k < 0) {
  13.         k *= -1;
  14.         for (int i = 0; i < k; ++i) {
  15.             int tmp = data[0];
  16.             for (int i = 0; i < n-1; ++i)
  17.                 data[i] = data[i+1];
  18.             data[n-1] = tmp;
  19.         }
  20.     }
  21. }
  22.  
  23. void read_array(int *data, int *n, int *k) {
  24.     cin >> *n;
  25.     for (int i = 0; i < *n; ++i)
  26.         cin >> data[i];
  27.     cin >> *k;
  28. }
  29.  
  30. void print_array(int *data, int n) {
  31.     for (int i = 0; i < n; ++i)
  32.         cout << data[i] << " ";
  33. }
  34.  
  35. int main() {
  36.     int data[100] = {}, n, k;
  37.     read_array(data, &n, &k);
  38.     shift(data, n, k);
  39.     print_array(data, n);
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement