Processing math: 0%

Решаем задачи Абрамян на Паскале. 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 не будет опубликован. Обязательные поля помечены *