Циклический сдвиг числа на 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 позиций. Вот список действий:

  1. В начале программы объявляются три переменные типа int: n, k и x.
  2. Затем с помощью функции scanf в эти переменные считываются значения, введенные пользователем.
  3. Далее происходит вычисление значения переменной tmp: (k + x) % n.
  4. И наконец, с помощью функции printf выводится значение переменной tmp.
  5. Программа завершается, и возвращается 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы