Как логически проверить форму массива в операторе IF? - PullRequest
0 голосов
/ 27 июня 2019

Можно ли проверить, является ли массив определенной формы, используя оператор IF?Я пробовал следующее безуспешно.

program main

   implicit none

 ! Local variables. 

   integer, dimension(3,3) :: a
   integer, dimension(3,3) :: b

  ! Check if a is a 3x3 array.

    if (shape(a) == shape(b)) print *, "Works"

end program main

Но я получаю ошибку:

Error: IF clause at (1) requires a scalar LOGICAL expression

1 Ответ

1 голос
/ 27 июня 2019

(shape(a) == shape(b)) - это логический массив [ T T ], поскольку он сравнивает первый ранг a с первым рангом b и т. Д.

Вам нужен логический скаляр: (all((shape(a) == shape(b))) убедитесь, что все измерения одинаковы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...