2012-03-20 10 views
5

Io uso Fortran e mi chiedevo se è possibile fare una cosa del genereLoop in Fortran da un elenco

do i = array 
    write (*,*) i 
    end do 

cui matrice è un elenco di numeri interi non necessariamente ordinata.

risposta

6

voglio introdurre un secondo indice per scorrere gli elementi di un array:

program test 

    implicit none 

    integer, dimension(6) :: A 
    integer, dimension(10) :: B 
    integer    :: i, j 

    A = (/ 1, 3, 4, 5, 8, 9 /) 
    B = (/ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 /) 

    do j = 1, size(A) 
    i = A(j) 
    write(*,*) i, B(i) 
    end do 

end program test 
2

Vuoi dire che vuoi scrivere alcuni degli elementi di un array chiamato other_array ma non tutti, e che i dovrebbe assumere, in sostanza, valori arbitrari a sua volta? In altre parole si vuole stampare non

do i = 1, size(other_array,1) 
    write(*,*) other_array(i) 
end do 

ma qualcosa di simile

array = [1,3,4,2,3,7,8,8,12] 
write(*,*) another_array(array) 

che scrivere gli elementi di another_array specificati array? Questo è chiamato array subscripting. Non ho provato questo e ora sto uscendo, quindi non lo farò.