Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
современный фортран , Бортеньев.pdf
Скачиваний:
242
Добавлен:
26.03.2015
Размер:
2.34 Mб
Скачать

О. В. Бартеньев. Современный ФОРТРАН

!

2

2

!

3

3

4.12.4.5. Функции сдвига массива

CSHIFT(array, shift [, dim]) - выполняет циклический сдвиг массива array по заданному необязательному индексу dim.

array - массив любого типа.

shift - число позиций (INTEGER), на которое сдвигаются элементы array. Может быть целочисленным массивом, ранг которого на единицу меньше ранга array. Если shift - скаляр, то результат получается циклическим сдвигом каждого одномерного сечения по индексу dim на shift позиций. Если shift - массив, то каждый его элемент задает сдвиг для соответствующего сечения array. При этом форма shift должна совпадать с формой array за вычетом размерности dim. Положительный сдвиг выполняется в направлении уменьшения индексов (влево в случае вектора), и, наоборот, отрицательный сдвиг выполняется в направлении увеличения значений индексов массива (вправо в случае вектора).

dim - необязательный параметр (INTEGER), задающий индекс, по которому выполняется сдвиг; 1 < dim < n, где n - ранг array. Если dim опущен, то сдвиг выполняется по первому индексу.

Функция возвращает массив, в котором выполнен циклический сдвиг элементов, того же типа и формы, как и у array. Если ранг array больше единицы, то циклически сдвигается каждое одномерное сечение по заданному индексу dim или по первому индексу, если dim опущен.

Пример:

integer array (3, 3), ar1(3, 3), ar2 (3, 3) data array / 1, 4, 7, 2, 5, 8, 3, 6, 9 /

! Массив array:

1

2

3

!

4

5

6

!

7

8

9

! Сдвиг в каждом столбце на одну позицию ar1 = cshift(array, 1, dim = 1)

! Результат:

4

5

6

!

7

8

9

!

1

2

3

! Сдвиг в первом ряду на -1, во втором - на 1 ar2=cshift(array, shift=(/-1, 1, 0/), dim = 2)

! Результат:

3

1

2

!

5

6

4

!

7

8

9

EOSHIFT(array, shift [, boundary] [, dim]) - выполняет вытесняющий левый или правый сдвиг по заданному необязательному индексу dim и

152