Решаем задачи Абрамян на Паскале. Array85

Array85. Дан массив $$A$$ размера $$N$$ и целое число $$K$$ ($$1 \leq K \leq 4, K \lt N$$). Осуществить циклический сдвиг элементов массива вправо на $$K$$ позиций (при этом $$A_1$$ перейдет в $$A_{K+1}$$, $$A_2$$ — в $$A_{K+2}$$, $$…$$, $$A_N$$ — в $$A_K$$). Допускается использовать вспомогательный массив из $$4$$ элементов.

Решение:

Без дополнительного массива:

Осуществляется K сдвигов в права на 1 элемент.

С дополнительным массивом:

Задачи из раздела Array  можно посмотреть здесь.

Комментарии:

Комментарии 5

  • Без допмассива строка 23 аналогично Array83:
    for i:=N downto 2 do a[i]:=a[i-1];

  • С допмассивом вроде так, но нужно проверить
    for i:=n-k+1 to N do atemp[i-N+K]:=a[i];   for i:=N downto K+1 do a[i]:=a[i-K];

  • А это поправил чуть подругому, изменил цикл:
    for i:=n-k+1 to N do atemp[i-N+K]:=a[i];
    на
    for i:=1 to K do atemp[i]:=a[N-K+i];
    Думаю так по логичней будет.
    Было:

    Стало:

    • Все верно. По времени постов видно, что 20 минут не мог понять почему не работает. Вывод — ложиться спать нужно вовремя)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *