Дополнен 2 года назад
Могу показать мой код. Но у меня частичное решение)
#include
using namespace std;
void read_data(int* data, int* n) {
cin >> *n;
for (int i = 0; i < *n; ++i)
cin >> data[i];
}
void show_data(int* data, int n) {
for (int i = 0; i < n; ++i)
cout << data[i] << " ";
}
void shift(int* data, int n, int k) {
// Сдвиг влево на k элементов эквивалентен сдвигу на n-k элементов вправо
if (k < 0) k += n;
// Копируем последние k элементов в новый массив
int tmp[100] = {};
for (int i = 0; i < k; ++i)
tmp[i] = data[n - k + i];
// Сдвигаем оставшиеся элементов на k элементов вправо
for (int i = n - k - 1; i > 0; --i)
data[i + k] = data[i];
// Восстанавливаем элементы из резервного массива в начало массива data
for (int i = 0; i < k; ++i)
data[i] = tmp[i];
}
int main() {
int data[100] = {}, n, k;
read_data(data, &n);
cin >> k;
shift(data, n, k);
show_data(data, n);
return 0;
}
С помощью данной функциии считайте массив с клавиатуры, сдвиньте на k элементов вправо и выведите на экран.
Формат входных данных
На первой строке дано одно целое число N (1 ≤ N ≤ 100) — количество элементов в массиве. В следующей строке заданы целые числа, не превосходящие 230 по абсолютной величине, — элементы массива A. В последней строке находится целое число k (|k| < N).
Формат выходных данных
Требуется вывести сдвинутый массив на экран.
входные данныевыходные данные
7
1 2 3 4 5 6 7
3
5 6 7 1 2 3 4
выходные данные
3
6 7 2
-1
7 2 6