我正在执行此程序,但是当我尝试运行时出现此错误:错误:数组引用中的排名不匹配(1)(2/1)。部分代码是巴西葡萄牙语,我真的需要帮助。 此代码用于模拟受污染的细胞。
program novo2
integer, parameter :: tmax=10, L=10
integer:: i,j,rule
real :: semente(0,1),digitado,vet(0:tmax),recebe(0:L)
integer::mais(0:L),menos(0:L)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!valor digitado
!print*, 'Digite um valor para começar. Entre 0 e 1: '
!print*,'Ou digite 2 para um valor aleatório'
digitado=0
print*, "para configuracao inicial tipo semente digite 1"
read*, digitado !AQUI ESTAVA ESCRITO SEMENTE
!pick a rule
!print*, 'Digite a regra desejada'
!read*, rule
!call transform(rule)
if(digitado==1)then
!inicio atribuir o t=0 para teste
semente=digitado
vet=0
vet(L/2,L/2)=1
!do i=1,L
! !verificar se o valor de j é igual ao de t para atribuir ao vetor o boolean
! if(i==(L*digitado)) vet(i)=1;
! print*,i,vet(i)
!
!enddo
print*,"-----------------------------------------------------------------"
!contorno
menos(0)=L
menos(L)=L-1
do i=1,L
menos(i)=i-1
enddo
mais(L)=0
mais(0)=L+1
do i=0,L-1
mais(i)=i+1
enddo
!
!regra 90
do j=0,L
do i=0,L
print*, vet
if ((vet(menos(i))==0).and.(vet(mais(i))==0) .and. (vet(i)==0)) then
recebe(i) = 0;
elseif ((vet(menos(i))==0).and.(vet(mais(i))==0) .and. (vet(i)==1)) then
recebe(i) = 1;
elseif ((vet(menos(i))==0).and.(vet(mais(i))==1) .and. (vet(i)==1)) then
recebe(i) = 1;
elseif ((vet(menos(i))==0).and.(vet(mais(i))==1) .and. (vet(i)==0)) then
recebe(i) = 1;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==0) .and. (vet(i)==1)) then
recebe(i) = 0;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==0) .and. (vet(i)==0)) then
recebe(i) = 1;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==1) .and. (vet(i)==1)) then
recebe(i) = 0;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==1) .and. (vet(i)==0)) then
recebe(i) = 0;
vet = recebe;
endif
if(vet(i)==1) then
print*, i,j
endif
vet=recebe;
enddo
i=i+1;
print*,recebe;
print*,"-----------------------------------------------------------------"
enddo
j=j+1;
print*,vet
else
if (digitado>0) then
vet=0
do i=1,L
!verificar se o valor de j é igual ao de t para atribuir ao vetor o boolean
if(i==(L*digitado)) vet(i)=1;
print*,i,vet(i)
enddo
print*,"-----------------------------------------------------------------"
!contorno
menos(0)=L
menos(L)=L-1
do i=1,L
menos(i)=i-1
enddo
mais(L)=0
mais(0)=1
do i=0,L-1
mais(i)=i+1
enddo
!regra 90
do j=0,L
do i=0,L
print*, vet
if ((vet(menos(i))==0).and.(vet(mais(i))==0) .and. (vet(i)==0)) then
recebe(i) = 0;
elseif ((vet(menos(i))==0).and.(vet(mais(i))==0) .and. (vet(i)==1)) then
recebe(i) = 1;
elseif ((vet(menos(i))==0).and.(vet(mais(i))==1) .and. (vet(i)==1)) then
recebe(i) = 1;
elseif ((vet(menos(i))==0).and.(vet(mais(i))==1) .and. (vet(i)==0)) then
recebe(i) = 1;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==0) .and. (vet(i)==1)) then
recebe(i) = 0;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==0) .and. (vet(i)==0)) then
recebe(i) = 1;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==1) .and. (vet(i)==1)) then
recebe(i) = 0;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==1) .and. (vet(i)==0)) then
recebe(i) = 0;
vet = recebe;
endif
if(vet(i)==1) then
print*, i,j
endif
vet=recebe;
enddo
i=i+1;
print*,recebe;
print*,"-----------------------------------------------------------------"
enddo
j=j+1;
print*,vet
endif
end if
if(digitado==2)then
!inicio atribuir o t=0 para teste
call RANDOM_NUMBER(semente)
PRINT*,semente
vet=0
do i=1,L
!verificar se o valor de j é igual ao de t para atribuir ao vetor o boolean
if(i<sdigitado) vet(i)=1;
print*,vet(i)
enddo
print*,"-----------------------------------------------------------------"
!contorno
menos(0)=L
menos(L)=L-1
do i=1,L
menos(i)=i-1
enddo
mais(L)=0
mais(0)=L+1
do i=0,L-1
mais(i)=i+1
enddo
!
!regra 90
do j=0,L
do i=0,L
print*, vet
if ((vet(menos(i))==0).and.(vet(mais(i))==0) .and. (vet(i)==0)) then
recebe(i) = 0;
elseif ((vet(menos(i))==0).and.(vet(mais(i))==0) .and. (vet(i)==1)) then
recebe(i) = 1;
elseif ((vet(menos(i))==0).and.(vet(mais(i))==1) .and. (vet(i)==1)) then
recebe(i) = 1;
elseif ((vet(menos(i))==0).and.(vet(mais(i))==1) .and. (vet(i)==0)) then
recebe(i) = 1;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==0) .and. (vet(i)==1)) then
recebe(i) = 0;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==0) .and. (vet(i)==0)) then
recebe(i) = 1;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==1) .and. (vet(i)==1)) then
recebe(i) = 0;
elseif ((vet(menos(i))==1).and.(vet(mais(i))==1) .and. (vet(i)==0)) then
recebe(i) = 0;
vet = recebe;
endif
if(vet(i)==1) then
print*, i,j
endif
vet=recebe;
enddo
i=i+1;
print*,recebe;
print*,"-----------------------------------------------------------------"
enddo
j=j+1;
print*,vet
endif
end program novo2
抱歉英语不好。