Array83. Дан массив размера $$N$$. Осуществить циклический сдвиг элементов массива вправо на одну позицию (при этом $$A_1$$ перейдет в $$A_2$$, $$A_2$$ — в $$A_3$$, …, $$A_N$$ — в $$A_1$$).
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
program Array83; var a : array[1..10] of Integer; N,i,An:Integer; begin Write('N: '); Readln(N); Writeln('A: '); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; An:=A[N]; for i:=N downto 2 do a[i]:=a[i-1]; a[1]:=An; for i:=1 to N do writeln(i,' :',a[i]); end. |
Решение от olegst1975:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
type mas=array [1..10]of real; var n,i:integer; a:mas; procedure swap(var a:mas;i:integer); begin if i=n then exit; a[i]:=a[i]+a[n]; a[n]:=a[i]-a[n]; a[i]:=a[i]-a[n]; swap(a,i+1); end; begin readln(n); for i:=1 to n do readln(a[i]); swap(a,1); for i:=1 to n do writeln(a[i]); end. |
Задачи из раздела Array можно посмотреть здесь.
Строка 18
for i:=N downto 2 do a[i]:=a[i-1];
Ну и типичный пример как делать не нужно. Была идея: а можно ли без доп переменной и перетасовыванием эл-тов?..Да)
[/crayon]
Буга га… избавляться от дополнительной переменной рекурсией… 🙂
Но решение добавил в шапку… возможно потомкам пригодиться 🙂