Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] Сдвиг чисел в массиве


Автор: borjomi 24.11.2006, 10:54
В массиве a1, a2, .. , an, произвести сдвиг элементов на одну позицию вправо, т.е сделать вид: an, a1, a2, .. , an-1. smile   smile  smile  
                    

Автор: Alexeis 24.11.2006, 11:10
Модератор: ознакомьтесь с правилами раздела. Язык нужно указывать так как он указан сейчас, т.е. в квадратных скобках.

Автор: ShadeSt 24.11.2006, 11:17
Код

var
  temp : integer;
  I    : integer;
  A    : array[0..N] of integer;
.....
  // Временно запоминаем последний элемент, потому как он затрется
  temp := A[High(A)] ;
  // Сдвигаем элементы
  For I := High(A) DownTo 1 do
    A[I] := A[I-1];
  // восстанавливаем последний элемент
  A[0] := temp;


Автор: volvo877 24.11.2006, 11:20
Цитата(borjomi @  24.11.2006,  09:54 Найти цитируемый пост)
произвести сдвиг элементов на одну позицию вправо

 smile Можно циклом:
Код
T := a[n]; { Запоминаем последний элемент }
for i := n downto 2 do
  a[i] := a[i - 1]; { перегоняем элементы на одну позицию правее }
a[1] := T; { И записываем сохраненное ранее значение в первую позицию }


А можно - без цикла:
Код
T := a[n];
move(a[1], a[2], (n - 1)*SizeOf(a[1])); { Встроенная процедура }
a[1] := T;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)