Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- template <typename T>
- void printArr(T* arr, int arrSize)
- {
- for (int i{ 0 }; i < arrSize; ++i)
- {
- std::cout << arr[i] << ' ';
- }
- std::cout << '\n';
- }
- template <typename T>
- void shiftRight(T* arr, int arrSize)
- {
- T tmp{ arr[arrSize - 1] };
- for (int i{ arrSize - 1 }; i > 0; --i)
- {
- arr[i] = arr[i - 1];
- }
- arr[0] = tmp;
- }
- template <typename T>
- void shiftLeft(T* arr, int arrSize)
- {
- T tmp{ arr[0] };
- for (int i{ 0 }; i < (arrSize -1 ); ++i)
- {
- arr[i] = arr[i + 1];
- }
- arr[arrSize - 1] = tmp;
- }
- template <typename T>
- void shiftCycle(T* arr, int arrSize, int shifts)
- {
- shifts %= arrSize; // 2 % 10 = 2
- /*
- * int n {10};
- * int m {3};
- *
- * n % m => n - ( n / m) * m
- * 0 % 2 = 0
- * 1 % 2 = 1
- * 2 % 2 = 0
- * 3 % 2 = 1
- * 4 % 2 = 0
- * 5 % 2 = 1
- */
- if (shifts > 0)
- {
- while (shifts--)
- {
- shiftRight(arr, arrSize);
- printArr(arr, arrSize);
- }
- }
- else
- {
- shifts = -shifts;
- while (shifts--)
- {
- shiftLeft(arr, arrSize);
- printArr(arr, arrSize);
- }
- }
- }
- int main()
- {
- const int arrSize{ 10 };
- int arr[arrSize]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
- printArr(arr, arrSize);
- //shiftRight(arr, arrSize);
- //shiftLeft(arr, arrSize);
- shiftCycle(arr, arrSize, -32);
- printArr(arr, arrSize);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement