- ベストアンサー
IF文での条件の書き方について(fortran)
条件 (1)exp(-at)<x (2)exp(-bt)<y と二つの条件があるとする. (a,b,x,yは定数とし,tは時間でdo文でまわすとする) 例えば,IF( (1) .AND. (2) )THENとすれば,「(1) かつ (2)」となり,つまり,「時間的に,(1)・(2)がどちらが先に条件を満たしたとしても良い」とういうことですよね. 今回,私が作ろうとしているプログラムは 「(1)が先に条件を満たした後に,(2)の条件を満たすなら」というIF文を作りたいのです.( (2)の条件が先に満たしてしまう場合は除きたいということです) こういう場合はどういった表記をすればよいのでしょうか. 下手な文章で読みにくいかもわかりませんが,アドバイスをお願いいたします.
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
文章から察するに「先に」というのは ・「時間的に先」: あるループで条件 (1) が成り立っており, その (条件 (1) が成り立っている) ままで条件 (2) も成り立つ という意味であって ・条件 (1) を先に評価することを強制する: 条件 (1) が成り立たないときに条件 (2) が評価されるのは困る という意味ではないように思えるんですがいかがなものでしょうか>#1. 挙げられた条件だとあまりにもアホなので, 「実際に使う条件」はもっと複雑なものと思っていいんですよね? 条件が成り立っているかどうかを「ループを超えて保持する」必要がありますから, そのことをフラグで表すしかないんじゃないですかね. それぞれの条件が成り立っていることを個別にフラグで表してなんとかする.
その他の回答 (3)
- cistronezk
- ベストアンサー率38% (120/309)
>条件 (1)exp(-at)<x (2)exp(-bt)<y と二つの条件があるとする. >(a,b,x,yは定数とし,tは時間でdo文でまわすとする) 回答2の方のご指摘で気付かされましたが、なぜかこの辺に関する考慮が完全にすっぽり抜けてました。回答1は無視してください。
お礼
ありがとうございました
- a987654
- ベストアンサー率26% (112/415)
ループの前で FLG=0 としておいてループの中で IF( (FLG=1) .AND. (2) )THEN 処理 IF( (1) .AND. NOT(2) )THEN FLG=1 ELSE FLG=0 END IF ’NOT(2) は(2)が A=B ならば A<>B ではないでしょうか?
お礼
ありがとうございました
- cistronezk
- ベストアンサー率38% (120/309)
>「(1)が先に条件を満たした後に,(2)の条件を満たすなら」というIF文を作りたいのです 最近の言語とコンパイラなら(1)(2)の順に評価し、(1)でfalseならそこで評価を止めると思います(未確認)。 心配でしたら、ifをネストしてはいかがでしょう? if (1) then if (2) then c 何らかの処理 end if end if
お礼
ありがとうございました
お礼
ありがとうございました