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

解決


kuri  2003-06-19 17:40:23  No: 107563  IP: [192.*.*.*]

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

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

編集 削除
たかみちえ  URL  2003-06-19 18:32:03  No: 107564  IP: [192.*.*.*]

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

編集 削除
クリリン  2003-06-20 13:26:39  No: 107565  IP: [192.*.*.*]

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

編集 削除
クリリン  2003-06-20 13:27:14  No: 107566  IP: [192.*.*.*]

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

編集 削除
spiral  2003-06-21 02:29:07  No: 107567  IP: [192.*.*.*]

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

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 02:43:55  No: 107568  IP: [192.*.*.*]


なんとなく、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 02:45:47  No: 107569  IP: [192.*.*.*]

>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 02:45:48  No: 107570  IP: [192.*.*.*]

>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:01:14  No: 107571  IP: [192.*.*.*]

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

編集 削除
kuri  2003-06-24 17:45:24  No: 107572  IP: [192.*.*.*]

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

編集 削除