Дан целочисленный массив A из 30 элементов. Опишите на русском языке или на одном из языков программирования алгоритм, который осуществляет циклический сдвиг элементов массива вправо, то есть элементу A[i] присваивается значение, которое было записано в элементе A[i–1] до сдвига, а первому элементу массива присваивается значение, которое было записано в последнем элементе до сдвига.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль | Бейсик | Си | Естественный язык |
const N=30; var A: array [1..N] of integer; i, x, y: integer; begin for i:=1 to N do readln(A[i]); ... for i:=1 to N do writeln(A[i]); end. | N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I ... FOR I = 1 TO N PRINT A(I) NEXT I END | #include <stdio.h> #define N 30 void main(void) {int A[N]; int i, x, y; for (i=0; i<N; i++) scanf("%d", &A[i]); ... for (i=0; i<N; i++) printf("%d\n", A[i]); } | Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. ... В цикле от 1 до 30 выводим элементы массива A с 1-го по 30-й. |
Решение задачи №6.
Паскаль | Бейсик | Си | Естественный язык |
x:=A[N]; for i:=N downto 2 do A[i]:=A[i-1]; A[1]:=x; | X = A(N) FOR I = N TO 2 STEP -1 A(I) = A(i-1) NEXT I A(1)=X | x=A[N-1]; for (i=N-1; i>0; i--) A[i]=A[i-1]; A[0]=x; | Записываем в переменную X значение последнего элемента массива A[N]. В цикле для переменной I от N до 2 элементу массива A[I] присваиваем значение A[I–1]. После окончания цикла присваиваем элементу A[1] значение переменной X. |
![](/Vopros.jpg)
Переменной Х зададим значение последнего элемента массива a[n], далее в цикле с 30 до 2 (цикл идет на уменьшение индекса) меняем элементы массива (a[i]:=a[i-1]). После прохода цикла все элементы кроме первого поменяли свое значение, осталось только поменять значение первому элементу массиву, меняем a[1]:=x (Х у нас имел значение последнего элемента массива). Задача решена.
![](/i_back.gif)