3

Fortran 95 の 2 次元の配列 (行列) について簡単な質問があります。私の知る限り、数学では行列内の要素を Aij として定義します。ここで、i はその行を表し、j はその列を表します。単純に をコーディングするwrite(*,*) Matrixと、行と列が反転した結果が得られます。次のコード例を見てください。

program TEST
implicit none
integer :: P(3,3), i

P(1,1)=1
P(1,2)=2
P(1,3)=3
P(2,1)=4
P(2,2)=5
P(2,3)=6
P(3,1)=7
P(3,2)=8
P(3,3)=9

do i=1,3
  write(*,"(3(I1,1X))") P(i,1:3)
enddo

write(*,*)
write(*,"(3(I1,1X))") P

end program TEST

上記のループ (行を修正し、その中の各列を出力する) を使用すると、期待どおりの結果が得られます。

1 2 3
4 5 6
7 8 9

最後のステートメントを使用すると、次のwrite(*,"(3(I1,1X))") Pようになります。

1 4 7
2 5 8
3 6 9

ここで何か間違ったことをしていますか?

4

1 に答える 1