Циклический сдвиг числа на k позиций - C (СИ)
Формулировка задачи:
Что-то никак задачка не получается. Сдвигать просто массив циклически умею, но никак не получается сдвинуть его с указанной позиции и вывести не весь массив а только нужную ячейку. Которая равна текущая позиция + величина сдвига и все это еще и по кругу. Может я зря с массивом затеял, может есть другое решение этой задачи. Буду благодарен за помощь.
#include <stdio.h> /* * Предположим, что по кругу записаны N=10 цифр от 0 до 9. Что-то вроде такого: 0 1 2 3 9 4 8 7 6 5 Написать программу, которая осуществляет циклический сдвиг числа на k позиций. Например, если мы находимся на цифре 7 и k=4, то после циклического сдвига на k по часовой стрелке, мы попадаем на цифру 1. Входные данные: Три натуральных числа. Первое число N количество чисел, записанных по кругу. Второе число k -- величина сдвига. Третье число x -- текущая позиция. Выходные данные: Одно целое число c, полученное после циклического сдвига на k по часовой стрелке. Sample Input 1: 10 4 7 Sample Output 1: 1 Sample Input 2: 22 5 18 Sample Output 2: 1 */ int main() { int n, k, x, i, j, tmp; scanf(" %d %d %d", &n, &k, &x); int arr[n]; i = 0; while(i < n) { arr[i] = i; ++i; } for(i = 0; i < k; i++) { tmp = arr[0]; for(j = 0; j < n - 1; j++) { arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } for(i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }
Решение задачи: «Циклический сдвиг числа на k позиций»
textual
Листинг программы
#include <stdio.h> int main() { int n, k, x, tmp; scanf(" %d %d %d", &n, &k, &x); tmp = (k + x) % n; printf("%d", tmp); return 0; }
Объяснение кода листинга программы
В этом коде выполняется циклический сдвиг числа на k позиций. Вот список действий:
- В начале программы объявляются три переменные типа int: n, k и x.
- Затем с помощью функции scanf в эти переменные считываются значения, введенные пользователем.
- Далее происходит вычисление значения переменной tmp: (k + x) % n.
- И наконец, с помощью функции printf выводится значение переменной tmp.
- Программа завершается, и возвращается 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д