if文の中の"<"や">"の符号について

解決


kuri  2003-06-20 02:40:23  No: 107563

下の関数の名前をyobidasiと付けます。
この関数の中で例えば一つ目のモジュールから呼ばれると
if文の中の符号を"<"にし、また別の二つ目のモジュールから
呼ばれた場合、符号を">"にだけ変えてプログラムを動かしたいんです。
一番短い内容で符号だけを切り替える方法をぜひ教えてほしいです。
よろしくお願いします。

private sub yobidasi(byref aaa() as integer)
  :
  :
 if aaa(x) < aaa(y) then
  :
  :
 end if
end sub


たかみちえ  URL  2003-06-20 03:32:03  No: 107564

考え方を変えてみてください。
  aaa(x)<aaa(y)は"aaa(x)はaaa(y)より少ない"という意味です。
ならば、コードを変更する必要はありませんね。


クリリン  2003-06-20 22:26:39  No: 107565

ifについてですが、
もしそうであれば真(Then)、そうでなければ偽(False)です。
よって、たかみちえさんがおっしゃるとおりなのです。


クリリン  2003-06-20 22:27:14  No: 107566

ミス
偽(False)->偽(Else)


spiral  2003-06-21 11:29:07  No: 107567

【論理条件】の結果を引数として渡すってのはダメかな?
(同値の場合を弾く必要があるけどね)

Private Sub yobidasi(ByRef aaa() As Integer _
                           , ByVal blnCondition As Boolean)
:
:
  If (aaa(x) < aaa(y)) = blnCondition _
                       And (aaa(x) <> aaa(y)) Then
:
:
  End If
End Sub


Loreley  2003-06-21 11:43:55  No: 107568


なんとなく、kuriさんの希望とは違うような気がするんですが
私の勘違いであればすみません。

要するに一度目と二度目でaaa()の値がまったく同じであっても
結果を変えたいということなのではないですか?

Elseを使っても
その場合、同じ結果がかえってしまいます。

また、< と > はNotの関係にはありません
<はNot >=で
>はNot <=です。
使うのであればElse ifだと思います。

まず、わかりやすく引数もかえます

(呼びだし側)
call yobidasi(5,3,0)
call yobidasi(5,3,1)

(プロシージャ)
private sub yobidasi(x,y,flag)

  if flag=0 then
     if x < y then
        msgbox y
     end if
  else if flag=1 then
     if x > y then
        msgbox y
     end if
  end if

end sub

この場合、二度目でだけでメッセージボックスがでてきます。
ところが
     if x < y then
        msgbox y
     else if x > y then
        msgbox y
     end if
だと
両方でます。

こういうことではないかと思ったんですが。
違ってたらすみません。

で、もしそうでしたら、結局のところ

private sub yobidasi(byref aaa() as integer,flag)

  if flag=0 then
     if aaa(x) < aaa(y) then
        
     end if
  else if flag=1 then
     if aaa(x) > aaa(y) then
        
     end if
  end if

end sub

とすれば良いと思います。
予想ですが、昇順と降順の入れ替えかなにですか?

・・・違ってたら恥ずかしいな(笑)
最近そういう勘違い多いからなぁ・・・。不安だ(笑)


Loreley  2003-06-21 11:45:47  No: 107569

>private sub yobidasi(x,y,flag)

private sub yobidasi(x as long,y as long,flag as long)

>private sub yobidasi(byref aaa() as integer,flag)

private sub yobidasi(byref aaa() as integer,flag as long)

の間違いです。(^^;


Loreley  2003-06-21 11:45:48  No: 107570

>private sub yobidasi(x,y,flag)

private sub yobidasi(x as long,y as long,flag as long)

>private sub yobidasi(byref aaa() as integer,flag)

private sub yobidasi(byref aaa() as integer,flag as long)

の間違いです。(^^;


Loreley  2003-06-21 20:01:14  No: 107571

私のちょっと前に書き込みがあったのに今気がつきました。
spiralさんのもののほうが私のよりスマートですね(^^)


kuri  2003-06-25 02:45:24  No: 107572

返事が大変遅れて申し訳ないです。
みなさんの協力もあって無事なんとか解決しました。
本当にありがとうございました。感謝


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加