• 締切済み

fortran

do I = 1,40 do F = 1,4 do L = 1,100 if (I == 1. .OR. L == 1.) then A (I,F,L) = 3. else A (I,F,L) = 3.* B (I-1,F,L) end if end do end do do F = 1,4 do L = 1,100 do M = 1,100 B (I,F,L) = B (I,F,L) + C (I,F,M,L) end do end do end do end do 簡素化したプログラムなので、わかりにくいと思うのですが、後で計算するB(I,F,L)をA(I,F,L)のDOループに最初に持ってくると、I=1orL=1のときは正しい計算をしてくれるのですが、そのほかのときはB(I-1,F,L)に値が入らないのです。ちなみにC(I,F,M,L)はA(I,F,L)のループの後に計算しましたが、省略しました。 ご回答よろしくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「DOループの最初に持ってきた」プログラムはどのようになっていますか? あと, 「値が入らない」とはどのような意味ですか?

koon1
質問者

補足

説明不足で申し訳ありません。 このプログラムで、I=1,L=1のときにはA=3になり、I=2のときでL=1以外の場合はA(2,F,L)=3*B(I-1,F,L)にしたいのです。しかし、現状ではI=(1,F,L),I=(I,F,1)のときはA=3になるのですが、I=(2,F,L)(L=/1)のときにA(2,F,L)=0,つまりB(I-1,F,L)は読み込まれていないのです。 DOループの最初に持ってきたというのは、 B(I,F,L)の計算よりも前にB(I-1,F,L)を書いたという意味です。それで違っているのかなと思ったのですが、初心者なのでよくわからないのです。お返事よろしくお願いします。

関連するQ&A