Мне нужно использовать условие IF
, чтобы определить, совпадает ли целое число в массиве (A
) с целым числом в другом массиве (B
), прежде чем продолжить работу с кодом. Массивы имеют неодинаковую длину и содержат уникальные значения, которые являются положительными.
Я знаю, что могу найти подходящие значения, используя:
DO I = 1,SIZE(A)
Match(J)=(ANY(A(I)==B))
Однако этот формат не принимается конструкцией IF...THEN
. Я еще не нашел способ реализовать это, просматривая онлайн и общее тестирование. Что мне здесь не хватает?
EDIT:
В качестве альтернативы я попробовал следующий код:
INTEGER :: I , K, B(900),C(900),I1,ID3, IP
INTEGER, INTENT(IN) :: A, N
OPEN(12,FILE='../B.dat')
DO I=1,817
READ(12,*)B(I),C(I)
END DO
DO I = 1,SIZE(A)
DO K = 1,SIZE(B)
IF (I.EQ.K) THEN
DO IP = N-9,N
ID3 = I1 +A*(IP-1)
END DO
END DO
END DO
Однако K изменяется на протяжении всего цикла, и поэтому код не работает для сопоставления. Я тогда попробовал:
DO I = 1, SIZE(A)
I1 =ID(I)
DO IP = N-9,N
ID3 = I1 +A*(IP-1)
END DO
Однако я получил ошибку сегментации:
_____________ runcode :: main:: | runCode: Не удалось запустить | C: \ TELEMAC \ VEG \ May \ PRIVEtest.cas_2018-05-02-16h57min04s \ out_testMedit.exe
| ~~~~~~~~~~~~~~~~~~ | Программа получила сигнал SIGSEGV: Сегментация
ошибка - недействительная ссылка на память. | | Обратный след для этой ошибки:
| # 0 ffffffffffffffff | ~~~~~~~~~~~~~~~~~~