ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.12.2023
Просмотров: 346
Скачиваний: 6
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Работа maxval c dim=1, но без mask maxval(b,dim=1)=
2
maxval(b,dim=1)=
4
maxval(b,dim=1)=
6
maxval(b,dim=1)= 73
maxval(b,dim=1)= 93
maxval(b,dim=1)= 12
maxval(b,dim=1)= 43
maxval(b,dim=1)= 63
maxval(b,dim=1)= 53
maxval(b,dim=1)= 20
maxval(b,dim=1)= 33
maxval(b,dim=1)= 24
Работа maxval c dim=2, но без mask maxval(b,dim=2)=
5
maxval(b,dim=2)=
6
maxval(b,dim=2)= 93
maxval(b,dim=2)= 12
maxval(b,dim=2)= 31
maxval(b,dim=2)= 63
maxval(b,dim=2)= 33
maxval(b,dim=2)= 24
Размер левого слоя массива b есть size(b(:,1,:)=
8
Форма левого слоя массива b есть shape(b(:,1,:)=
2 4
Содержимое левого слоя массива b:
1 73 31 19 2
8 43 20
Содержимое cреднего слоя массива b:
3 93 13 33 4
10 63 22
Содержимое правого слоя массива b:
5 11 17 23 6
12 53 24
Работа maxval c dim=3, но без mask maxval(b,dim=3)= 73
maxval(b,dim=3)= 43
maxval(b,dim=3)= 93
maxval(b,dim=3)= 63
maxval(b,dim=3)= 23
maxval(b,dim=3)= 53 244
Размер листа массива b есть size(b(:,:,1)=
6
Форма листа массива b есть shape(b)=
2 3
Работа maxval c dim=1 и с mask:
maxval(b,1,mask)=***
!
В первом и третьем столбцах первого листа maxval(b,1,mask)=
3
!
нет чисел с тройкой в младшем разряде.
maxval(b,1,mask)=***
!
Поэтому maxval и не ищет в них максимальное.
maxval(b,1,mask)= 73
maxval(b,1,mask)= 93
maxval(b,1,mask)=***
!
То же в третьем столбце второго листа maxval(b,1,mask)= 43
!
maxval(b,1,mask)= 63
!
maxval(b,1,mask)= 53
!
maxval(b,1,mask)=***
!
и первом столбце четвёртого maxval(b,1,mask)= 33
maxval(b,1,mask)= 23
Работа maxval c dim=2 и с mask:
maxval(b,2,mask)=
3
maxval(b,2,mask)=***
!
То же во второй строке первого листа,
maxval(b,2,mask)= 93
maxval(b,2,mask)=***
!
во второй строке второго листа maxval(b,2,mask)= 13
maxval(b,2,mask)= 63
maxval(b,2,mask)= 33
maxval(b,2,mask)=***
!
и во второй строке чктвёртого.
Размер левого слоя массива b есть size(b(:,1,:)=
8
Форма левого слоя массива b есть shape(b(:,1,:)=
2 4
Содержимое левого слоя массива b:
1 73 31 19 2
8 43 20
Содержимое cреднего слоя массива b:
3 93 13 33 4
10 63 22
Содержимое правого слоя массива b:
5 11 17 23 6
12 53 24
Работа maxval c dim=3 и с mask:
maxval(b,3,mask)= 73
!
В каждой строке третьего измерения maxval(b,3,mask)= 43
!
встречается число с тройкой в maxval(b,3,mask)= 93
!
разряде единиц. Поэтому при dim=3
maxval(b,3,mask)= 63
!
maxval среди них находит максимальное maxval(b,3,mask)= 23
!
maxval(b,3,mask)= 53
!
245
b:
! Результат работы предыдущей
1 3
5
Первый
! программы после замены
2 4
6
лист
! в её исходном тексте
----------
! имени maxval на minval.
73 93 11
Второй
8 10 12
лист
----------
31 13 17
Третий
43 63 53
лист
----------
19 33 23
Четвёртый
20 22 24
лист
----------
Размер массива b есть size(b)= 24
Форма массива b есть shape(b)=
2 3
4
Работа minval без dim и без mask minval(b)=
1
Работа minval c mask=(mod(b,10)==3), но без dim:
minval(b,mask)=
3
Работа minval c dim=1, но без mask minval(b,dim=1)=
1
minval(b,dim=1)=
3
minval(b,dim=1)=
5
minval(b,dim=1)=
8
minval(b,dim=1)= 10
minval(b,dim=1)= 11
minval(b,dim=1)= 31
minval(b,dim=1)= 13
minval(b,dim=1)= 17
minval(b,dim=1)= 19
minval(b,dim=1)= 22
minval(b,dim=1)= 23
Работа minval c dim=2, но без mask minval(b,dim=2)=
1
minval(b,dim=2)=
2
minval(b,dim=2)= 11
minval(b,dim=2)=
8
minval(b,dim=2)= 13
minval(b,dim=2)= 43
minval(b,dim=2)= 19
minval(b,dim=2)= 20 246
! Результат работы предыдущей
1 3
5
Первый
! программы после замены
2 4
6
лист
! в её исходном тексте
----------
! имени maxval на minval.
73 93 11
Второй
8 10 12
лист
----------
31 13 17
Третий
43 63 53
лист
----------
19 33 23
Четвёртый
20 22 24
лист
----------
Размер массива b есть size(b)= 24
Форма массива b есть shape(b)=
2 3
4
Работа minval без dim и без mask minval(b)=
1
Работа minval c mask=(mod(b,10)==3), но без dim:
minval(b,mask)=
3
Работа minval c dim=1, но без mask minval(b,dim=1)=
1
minval(b,dim=1)=
3
minval(b,dim=1)=
5
minval(b,dim=1)=
8
minval(b,dim=1)= 10
minval(b,dim=1)= 11
minval(b,dim=1)= 31
minval(b,dim=1)= 13
minval(b,dim=1)= 17
minval(b,dim=1)= 19
minval(b,dim=1)= 22
minval(b,dim=1)= 23
Работа minval c dim=2, но без mask minval(b,dim=2)=
1
minval(b,dim=2)=
2
minval(b,dim=2)= 11
minval(b,dim=2)=
8
minval(b,dim=2)= 13
minval(b,dim=2)= 43
minval(b,dim=2)= 19
minval(b,dim=2)= 20 246
Размер левого слоя массива b есть size(b(:,1,:)=
8
Форма левого слоя массива b есть shape(b(:,1,:)=
2 4
Содержимое левого слоя массива b:
1 73 31 19 2
8 43 20
Содержимое cреднего слоя массива b:
3 93 13 33 4
10 63 22
Содержимое правого слоя массива b:
5 11 17 23 6
12 53 24
Работа minval c dim=3, но без mask minval(b,dim=3)=
1
minval(b,dim=3)=
2
minval(b,dim=3)=
3
minval(b,dim=3)=
4
minval(b,dim=3)=
5
minval(b,dim=3)=
6
Размер листа массива b есть size(b(:,:,1)=
6
Форма листа массива b есть shape(b)=
2 3
Работа minval c dim=1 и с mask:
minval(b,1,mask)=***
minval(b,1,mask)=
3
minval(b,1,mask)=***
minval(b,1,mask)= 73
minval(b,1,mask)= 93
minval(b,1,mask)=***
minval(b,1,mask)= 43
minval(b,1,mask)= 13
minval(b,1,mask)= 53
minval(b,1,mask)=***
minval(b,1,mask)= 33
minval(b,1,mask)= 23
Работа minval c dim=2 и с mask:
minval(b,2,mask)=
3
minval(b,2,mask)=***
minval(b,2,mask)= 73
minval(b,2,mask)=***
minval(b,2,mask)= 13
minval(b,2,mask)= 43
minval(b,2,mask)= 23
minval(b,2,mask)=***
247
Размер левого слоя массива b есть size(b(:,1,:)=
8
Форма левого слоя массива b есть shape(b(:,1,:)=
2 4
Содержимое левого слоя массива b:
1 73 31 19 2
8 43 20
Содержимое cреднего слоя массива b:
3 93 13 33 4
10 63 22
Содержимое правого слоя массива b:
5 11 17 23 6
12 53 24
Работа minval c dim=3 и с mask:
1 ... 9 10 11 12 13 14 15 16 ... 23
minval(b,3,mask)= 73
minval(b,3,mask)= 43
minval(b,3,mask)=
3
minval(b,3,mask)= 63
minval(b,3,mask)= 23
minval(b,3,mask)= 53
Обратите внимание, что присвоить значение функций maxval и minval переменной целого типа можно лишь в том случае, если их результат не является массивом.
program test_maxmin; implicit none
! Программа может integer :: a(4)=(/ 13, 103, 40, 1005 /)
! продемонстрировать, что integer :: k, b(2,3,4)= reshape(&
! значения maxval, minval
& (/ 1, 2, 3, 4, 5, 6, 73, 8,&
! присваивать целой
& 93,10,11,12,31,43,13,63,17,&
! переменной можно лишь в
& 53,19,20,33,22,23,24/),shape=(/2,3,4/))
! результат не является k=maxval(a);
write(*,*) ’ k=’,k
! массивом.
k=maxval(a,1); write(*,*) ’ k=’,k
!
k=maxval(b);
write(*,*) ’ k=’,k
!
k=maxval(b(:,1,1)); write(*,*) ’ k=’,k
!
write(*,*) ’shape(b(1,:,:))=’ shape(b(1,:,:)) ! Так раскомментирование write(*,*) ’shape(b(:,1,:))=’ shape(b(:,1,:)) ! любой из трёх последних write(*,*) ’shape(b(:,:,1))=’ shape(b(:,:,1)) ! строк этой программы к
! k=maxval(b,1);
! приведёт выводу сообщения:
! k=maxval(b,2);
! ошибка
Incompatible
! k=maxval(b,3);
! ranks 0 and 2 in assignment end program test_maxmin
Дело в том, что в случае трёхмерного массива b указание при вы- зове maxval номера измерения, например, 1 заставит функцию ис- кать в качестве результата наибольшие значения по каждому из 12
столбцов матрицы размером 3 × 4.
248
5. product(array [,dim], [,mask]) — при отсутствии необязательных аргументов возвращает произведение значений элементов массива
(целого или вещественного типа). При наличии одного дополнитель- ного аргумента dim (номера измерения) возвращает произведение элементов массива по указанному измерению. Аргумент mask обес- печивает возможный отбор перемножаемых элементов.
program test_product
! Программа демонстрирует implicit none
! работу функции product.
integer i, j, k real(4) :: b(2,3,4)= reshape( (/ 1, 2, 3, 4, 5, 6, 73, 8,&
&
93,10,11,12,31,43,13,63,17,53,19,20,33,22,23,24/), shape=(/2,3,4/))
logical mask(2,3,4)
character(12) :: txt(2,4)= reshape( (/
’
Первый
’,’
лист
’,&
&
’
Второй
’,’
лист
’, ’
Третий
’,’
лист
’,&
&
’
Четвёртый’,’
лист
’/), shape=(/2,4/))
write(*,’(" b:")’)
write(*,’( (3f5.1,a/3f5.1,a/3x,10("-")))’) &
&
(((b(i,j,k),j=1,3),txt(i,k),i=1,2),k=1,4)
write(*,’(" Размер массива b есть size(b)=",i3)’)
size(b)
write(*,’(" Форма массива b есть shape(b)=",3i3,/)’) shape(b)
write(*,’(1x,"Работа product без dim и без mask"/)’)
write(*,’(" product(b)=",e15.7/)’) product(b)
mask=mod(int(b),10)==3
!
Задание маски.
write(*,’(1x,"Работа product c mask=(mod(b,10)==3), но без dim:"/)’)
write(*,’(" product(b,mask)=",e15.7/)’) product(b,mask=mask)
write(*,’(1x,"Работа product c dim=1, но без mask"/)’)
write(*,’(" product(b,dim=1)=",e15.7)’) product(b,1)
write(*,*)
write(*,’(1x,"Работа product c dim=2, но без mask"/)’)
write(*,’(" product(b,dim=2)=",e15.7)’) product(b,2)
write(*,*)
write(*,’(" Размер левого слоя массива b есть size(b(:,1,:)=",5i3)’)&
&
size(b(:,1,:))
write(*,’(" Форма левого слоя массива b есть shape(b(:,1,:)=",5i3)’)&
&
shape(b(:,1,:))
write(*,’(" Содержимое левого слоя массива b:")’)
write(*,’(3x,4e15.7)’) ((b(i,1,k),k=1,4),i=1,2)
write(*,’(" Содержимое cреднего слоя массива b:")’)
write(*,’(3x,4e15.7)’) ((b(i,2,k),k=1,4),i=1,2)
write(*,’(" Содержимое правого слоя массива b:")’)
write(*,’(3x,4e15.7)’) ((b(i,3,k),k=1,4),i=1,2); write(*,*)
write(*,*)
write(*,’(1x,"Работа product c dim=3, но без mask"/)’)
write(*,’(" product(b,dim=3)=",e15.7)’) product(b,3)
write(*,’(" Размер листа массива b есть size(b(:,:,1)=",5i3)’)&
249
&
size(b(:,:,1))
write(*,’(" Форма листа массива b есть shape(b)=",5i3)’) shape(b(:,:,1))
write(*,*)
write(*,’(1x,"Работа product c dim=1 и с mask:"/)’)
write(*,’(" product(b,1,mask)=",e15.7)’) product(b,1,mask)
write(*,*)
write(*,’(1x,"Работа product c dim=2 и с mask:"/)’)
write(*,’(" product(b,2,mask)=",e15.7)’) product(b,2,mask)
write(*,*)
write(*,’(" Размер левого слоя массива b есть size(b(:,1,:)=",5i3)’)&
&
size(b(:,1,:))
write(*,’(" Форма левого слоя массива b есть shape(b(:,1,:)=",5i3)’)&
&
shape(b(:,1,:))
write(*,’(" Содержимое левого слоя массива b:")’)
write(*,’(33x,4f5.1)’) ((b(i,1,k),k=1,4),i=1,2)
write(*,’(" Содержимое cреднего слоя массива b:")’)
write(*,’(33x,4f5.1)’) ((b(i,2,k),k=1,4),i=1,2)
write(*,’(" Содержимое правого слоя массива b:")’)
write(*,’(33x,4f5.1)’) ((b(i,3,k),k=1,4),i=1,2); write(*,*)
write(*,’(1x,"Работа product c dim=3 и с mask:"/)’)
write(*,’(" product(b,3,mask)=",e15.7)’) product(b,3,mask)
write(*,*)
end program test_product b:
! Результат работы test_product
1.0 3.0 5.0
Первый
2.0 4.0 6.0
лист
----------
73.0 93.0 11.0
Второй
8.0 10.0 12.0
лист
----------
31.0 13.0 17.0
Третий
43.0 63.0 53.0
лист
----------
19.0 33.0 23.0 4етвёртый
20.0 22.0 24.0
лист
----------
Размер массива b есть size(b)= 24
Форма массива b есть shape(b)=
2 3
4
Работа product без dim и без mask product(b)=
0.7732151E+28
Работа product c mask=(mod(b,10)==3), но без dim:
product(b,mask)=
0.2885340E+14 250
Работа product c dim=1, но без mask product(b,dim=1)=
0.2000000E+01
product(b,dim=1)=
0.1200000E+02
product(b,dim=1)=
0.3000000E+02
product(b,dim=1)=
0.5840000E+03
product(b,dim=1)=
0.9300000E+03
product(b,dim=1)=
0.1320000E+03
product(b,dim=1)=
0.1333000E+04
product(b,dim=1)=
0.8190000E+03
product(b,dim=1)=
0.9010000E+03
product(b,dim=1)=
0.3800000E+03
product(b,dim=1)=
0.7260000E+03
product(b,dim=1)=
0.5520000E+03
Работа product c dim=2, но без mask product(b,dim=2)=
0.1500000E+02
product(b,dim=2)=
0.4800000E+02
product(b,dim=2)=
0.7467900E+05
product(b,dim=2)=
0.9600000E+03
product(b,dim=2)=
0.6851000E+04
product(b,dim=2)=
0.1435770E+06
product(b,dim=2)=
0.1442100E+05
product(b,dim=2)=
0.1056000E+05
Размер левого слоя массива b есть size(b(:,1,:)=
8
Форма левого слоя массива b есть shape(b(:,1,:)=
2 4
Содержимое левого слоя массива b:
0.1000000E+01 0.7300000E+02 0.3100000E+02 0.1900000E+02 0.2000000E+01 0.8000000E+01 0.4300000E+02 0.2000000E+02
Содержимое cреднего слоя массива b:
0.3000000E+01 0.9300000E+02 0.1300000E+02 0.3300000E+02 0.4000000E+01 0.1000000E+02 0.6300000E+02 0.2200000E+02
Содержимое правого слоя массива b:
0.5000000E+01 0.1100000E+02 0.1700000E+02 0.2300000E+02 0.6000000E+01 0.1200000E+02 0.5300000E+02 0.2400000E+02
Работа product c dim=3, но без mask product(b,dim=3)=
0.4299700E+05
product(b,dim=3)=
0.1376000E+05
product(b,dim=3)=
0.1196910E+06
product(b,dim=3)=
0.5544000E+05
product(b,dim=3)=
0.2150500E+05
product(b,dim=3)=
0.9158400E+05 251
Размер листа массива b есть size(b(:,:,1)=
6
Форма листа массива b есть shape(b)=
2 3
Работа product c dim=1 и с mask:
product(b,1,mask)=
0.1000000E+01
! <-- PRODUCT полагает,
product(b,1,mask)=
0.3000000E+01
!
что, если среди product(b,1,mask)=
0.1000000E+01
! <-- элементов НЕТ,
product(b,1,mask)=
0.7300000E+02
!
удовлетворяющих product(b,1,mask)=
0.9300000E+02
!
условию маски,
product(b,1,mask)=
0.1000000E+01
! <-- то искомое product(b,1,mask)=
0.4300000E+02
!
произведение product(b,1,mask)=
0.8190000E+03
!
равно product(b,1,mask)=
0.5300000E+02
!
product(b,1,mask)=
0.1000000E+01
! <-- Е Д И Н И Ц Е.
product(b,1,mask)=
0.3300000E+02
product(b,1,mask)=
0.2300000E+02
Работа product c dim=2 и с mask:
product(b,2,mask)=
0.3000000E+01
! Аналогично и для dim=2:
product(b,2,mask)=
0.1000000E+01
! <-- product(b,2,mask)=
0.6789000E+04
!
product(b,2,mask)=
0.1000000E+01
! <-- product(b,2,mask)=
0.1300000E+02
!
product(b,2,mask)=
0.1435770E+06
!
product(b,2,mask)=
0.7590000E+03
!
product(b,2,mask)=
0.1000000E+01
! <--
Размер левого слоя массива b есть size(b(:,1,:)=
8
Форма левого слоя массива b есть shape(b(:,1,:)=
2 4
Содержимое левого слоя массива b:
1.0 73.0 31.0 19.0 2.0 8.0 43.0 20.0
Содержимое cреднего слоя массива b:
3.0 93.0 13.0 33.0 4.0 10.0 63.0 22.0
Содержимое правого слоя массива b:
5.0 11.0 17.0 23.0 6.0 12.0 53.0 24.0
Работа product c dim=3 и с mask:
product(b,3,mask)=
0.7300000E+02
! В случае dim=3
product(b,3,mask)=
0.4300000E+02
! в каждой строке product(b,3,mask)=
0.1196910E+06
! исследуемой секции product(b,3,mask)=
0.6300000E+02
! есть хотя бы один product(b,3,mask)=
0.2300000E+02
! элемент c 3
product(b,3,mask)=
0.5300000E+02
! в младшей цифре.
252
6. sum(array [,dim], [,mask]) — при отсутствии необязательных ар- гументов возвращает сумму значений элементов массива (целого или вещественного типа). При наличии одного дополнительного ар- гумента dim (номера измерения) возвращает сумму элементов мас- сива по указанному измерению. Аргумент mask обеспечивает воз- можный отбор суммируемых элементов.
program test_sum;
implicit none
!
Демонстрация работы функции sum.
integer i, j, k integer :: b(2,3,4)= reshape( (/ 1, 2, 3, 4, 5, 6, 73, 8,&
&
93,10,11,12,31,43,13,63,17,53,19,20,33,22,23,24/), shape=(/2,3,4/))
logical mask(2,3,4)
character(12) :: txt(2,4)= reshape( (/
’
Первый
’,’
лист
’,&
&
’
Второй
’,’
лист
’, ’
Третий
’,’
лист
’,&
&
’
Четвёртый’,’
лист
’/), shape=(/2,4/))
write(*,’(" b:")’); write(*,’( (3i4,a/3i4,a/3x,10("-")))’) &
&
(((b(i,j,k),j=1,3),txt(i,k),i=1,2),k=1,4)
write(*,’(" Размер массива b есть size(b)=",i3 )’)
size(b)
write(*,’(" Форма массива b есть shape(b)=",3i3)’) shape(b)
write(*,’(" Работа sum без dim и без mask:",23(".")," sum(b)=",i5)’) sum(b)
mask=mod(int(b),10)==3
!<--= Задание маски.
write(*,’(" Работа sum без dim, но c mask=(mod(b,10)==3):...",&
&
" sum(b,mask)=",i5)’) sum(b,mask=mask)
write(*,’(" Работа sum c dim=1, но без mask:")’)
write(*,’(" sum(b,dim=1)=",i5)’) sum(b,1);
write(*,*)
write(*,’(" Работа sum c dim=2, но без mask:")’)
write(*,’(" sum(b,dim=2)=",i5)’) sum(b,2);
write(*,*)
write(*,’(" Размер левого слоя массива b есть size(b(:,1,:)=",5i3)’)&
&
size(b(:,1,:))
write(*,’(" Форма левого слоя массива b есть shape(b(:,1,:)=",5i3)’)&
&
shape(b(:,1,:))
write(*,’(" Содержимое левого слоя массива b:")’)
write(*,’(33x,4i4)’) ((b(i,1,k),k=1,4),i=1,2)
write(*,’(" Содержимое cреднего слоя массива b:")’)
write(*,’(33x,4i4)’) ((b(i,2,k),k=1,4),i=1,2)
write(*,’(" Содержимое правого слоя массива b:")’)
write(*,’(33x,4i4)’) ((b(i,3,k),k=1,4),i=1,2);
!
write(*,*)
write(*,’(" Работа sum c dim=3, но без mask:")’)
write(*,’(" sum(b,dim=3)=",i5)’) sum(b,3);
write(*,’(/" Размер листа массива b есть size(b(:,:,1)=",5i3)’)&
&
size(b(:,:,1))
write(*,’(" Форма листа массива b есть shape(b)=",5i3)’)&
&
shape(b(:,:,1)); write(*,*)
write(*,’(1x,"Работа sum c dim=1 и с mask:"/)’)
253
write(*,’(" sum(b,1,mask)=",i5)’) sum(b,1,mask);
write(*,*)
write(*,’(1x,"Работа sum c dim=2 и с mask:"/)’)
write(*,’(" sum(b,2,mask)=",i5)’) sum(b,2,mask);
write(*,*)
write(*,’(" Размер левого слоя массива b есть size(b(:,1,:)=",5i3)’)&
&
size(b(:,1,:))
write(*,’(" Форма левого слоя массива b есть shape(b(:,1,:)=",5i3)’)&
&
shape(b(:,1,:))
write(*,’(" Содержимое левого слоя массива b:")’)
write(*,’(33x,4i4)’) ((b(i,1,k),k=1,4),i=1,2)
write(*,’(" Содержимое cреднего слоя массива b:")’)
write(*,’(33x,4i4)’) ((b(i,2,k),k=1,4),i=1,2)
write(*,’(" Содержимое правого слоя массива b:")’)
write(*,’(33x,4i4)’) ((b(i,3,k),k=1,4),i=1,2); write(*,*)
write(*,’(1x,"Работа sum c dim=3 и с mask:"/)’)
write(*,’(" sum(b,3,mask)=",i5)’) sum(b,3,mask)
write(*,*)
end program test_sum b:
1 3
5
Первый
2 4
6
лист
----------
73 93 11
Второй
8 10 12
лист
----------
31 13 17
Третий
43 63 53
лист
----------
19 33 23
Четвёртый
20 22 24
лист
----------
Размер массива b есть size(b)= 24
Форма массива b есть shape(b)=
2 3
4
Работа sum без dim и без mask:....................... sum(b)=
589
Работа sum без dim, но c mask=(mod(b,10)==3):... sum(b,mask)=
397
Работа sum c dim=1, но без mask:
sum(b,dim=1)=
3
sum(b,dim=1)=
7
sum(b,dim=1)=
11
sum(b,dim=1)=
81
sum(b,dim=1)=
103
sum(b,dim=1)=
23
sum(b,dim=1)=
74
sum(b,dim=1)=
76
sum(b,dim=1)=
70
sum(b,dim=1)=
39
sum(b,dim=1)=
55
sum(b,dim=1)=
47 254
write(*,*)
write(*,’(1x,"Работа sum c dim=2 и с mask:"/)’)
write(*,’(" sum(b,2,mask)=",i5)’) sum(b,2,mask);
write(*,*)
write(*,’(" Размер левого слоя массива b есть size(b(:,1,:)=",5i3)’)&
&
size(b(:,1,:))
write(*,’(" Форма левого слоя массива b есть shape(b(:,1,:)=",5i3)’)&
&
shape(b(:,1,:))
write(*,’(" Содержимое левого слоя массива b:")’)
write(*,’(33x,4i4)’) ((b(i,1,k),k=1,4),i=1,2)
write(*,’(" Содержимое cреднего слоя массива b:")’)
write(*,’(33x,4i4)’) ((b(i,2,k),k=1,4),i=1,2)
write(*,’(" Содержимое правого слоя массива b:")’)
write(*,’(33x,4i4)’) ((b(i,3,k),k=1,4),i=1,2); write(*,*)
write(*,’(1x,"Работа sum c dim=3 и с mask:"/)’)
write(*,’(" sum(b,3,mask)=",i5)’) sum(b,3,mask)
write(*,*)
end program test_sum b:
1 3
5
Первый
2 4
6
лист
----------
73 93 11
Второй
8 10 12
лист
----------
31 13 17
Третий
43 63 53
лист
----------
19 33 23
Четвёртый
20 22 24
лист
----------
Размер массива b есть size(b)= 24
Форма массива b есть shape(b)=
2 3
4
Работа sum без dim и без mask:....................... sum(b)=
589
Работа sum без dim, но c mask=(mod(b,10)==3):... sum(b,mask)=
397
Работа sum c dim=1, но без mask:
sum(b,dim=1)=
3
sum(b,dim=1)=
7
sum(b,dim=1)=
11
sum(b,dim=1)=
81
sum(b,dim=1)=
103
sum(b,dim=1)=
23
sum(b,dim=1)=
74
sum(b,dim=1)=
76
sum(b,dim=1)=
70
sum(b,dim=1)=
39
sum(b,dim=1)=
55
sum(b,dim=1)=
47 254