Array86. Дан массив $$A$$ размера $$N$$ и целое число $$K$$ ($$1 \leq K \leq 4, K \lt N$$). Осуществить циклический сдвиг элементов массива влево на $$K$$ позиций (при этом $$A_N$$ перейдет в $$A_N-K$$, $$A_N-1$$ — в $$A_{N-K-1}$$, $$…$$, $$A_1$$ — в $$A_{N-K+1}$$). Допускается использовать вспомогательный массив из $$4$$ элементов.
Решение:
Без дополнительного массива:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
program Array86; var a : array[1..10] of Integer; N,K,A1,i,i2:Integer; begin Write('N: '); Readln(N); Write('K: '); Readln(K); Writeln('A: '); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; for i2:=1 to K do begin A1:=A[1]; for i:=1 to N-1 do a[i]:=a[i+1]; a[N]:=A1; end; for i:=1 to N do writeln(i,' :',a[i]); end. |
С дополнительным массивом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
program Array86; var a : array[1..10] of Integer; atemp : array[1..4] of Integer; N,K,i:Integer; begin Write('N: '); Readln(N); Write('K: '); Readln(K); Writeln('A: '); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; for i:=1 to K do atemp[i]:=a[i]; for i:=1 to N-K do a[i]:=a[i+K]; for i:=1 to K do a[N-K+i]:=atemp[i]; for i:=1 to N do writeln(i,' :',a[i]); end. |
Задачи из раздела Array можно посмотреть здесь.
Строка 23:
for i:=1 to N-1 do a[i]:=a[i+1];
Согласен, поправил.