アプリ版:「スタンプのみでお礼する」機能のリリースについて

条件 (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)の条件が先に満たしてしまう場合は除きたいということです)
こういう場合はどういった表記をすればよいのでしょうか.
下手な文章で読みにくいかもわかりませんが,アドバイスをお願いいたします.

A 回答 (4件)

文章から察するに「先に」というのは


・「時間的に先」: あるループで条件 (1) が成り立っており, その (条件 (1) が成り立っている) ままで条件 (2) も成り立つ
という意味であって
・条件 (1) を先に評価することを強制する: 条件 (1) が成り立たないときに条件 (2) が評価されるのは困る
という意味ではないように思えるんですがいかがなものでしょうか>#1.
挙げられた条件だとあまりにもアホなので, 「実際に使う条件」はもっと複雑なものと思っていいんですよね?
条件が成り立っているかどうかを「ループを超えて保持する」必要がありますから, そのことをフラグで表すしかないんじゃないですかね.
それぞれの条件が成り立っていることを個別にフラグで表してなんとかする.
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2009/12/07 11:15

>条件 (1)exp(-at)<x  (2)exp(-bt)<y と二つの条件があるとする.


>(a,b,x,yは定数とし,tは時間でdo文でまわすとする)

回答2の方のご指摘で気付かされましたが、なぜかこの辺に関する考慮が完全にすっぽり抜けてました。回答1は無視してください。
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2009/12/07 11:15

ループの前で 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
ではないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2009/12/07 11:15

>「(1)が先に条件を満たした後に,(2)の条件を満たすなら」というIF文を作りたいのです



最近の言語とコンパイラなら(1)(2)の順に評価し、(1)でfalseならそこで評価を止めると思います(未確認)。
心配でしたら、ifをネストしてはいかがでしょう?
if (1) then
 if (2) then
  c 何らかの処理
 end if
end if
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2009/12/07 11:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!