• ベストアンサー

VBScriptで

 変数(整数)A,B,Cの三つのうち、最大であるものを見つけるには、どういったコードが一番すっきりしているでしょうか? If Then Elseif~ しかないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kawabata
  • ベストアンサー率67% (21/31)
回答No.2

VBScriptとWSHでサンプルを作成してみました。 MaxVariables 関数として作成しています。 引数に評価したい変数の配列を渡します。 戻り値として、最大値を持つ変数のインデックスを返します。 VBScript では、アドレスが扱えないため、このような仕様にしました。 参考になればと思います。 ---- MaxVariables.vbs Option Explicit '--- 処理開始 Main Wscript.Quit '--- 処理メイン Sub Main()  Dim aryVariables, aryMax  Dim A, B, C, D  A = 4  B = 3  C = 2  D = 4  '--- 変数の配列を作る  aryVariables = Array(A, B, C, D)  Array_Write "aryVariables:", aryVariables  '--- 最大値を持つ変数を調べる  aryMax = MaxVariables(aryVariables)  Array_Write "aryMax:", aryMax End Sub '--- 最大値を持つ変数のインデックス配列を返す Function MaxVariables(aryVariables)  Dim lngL, varMax, lngMaxCount, lngN, aryResult()  '--- 最大値を求める  lngL = LBound(aryVariables)  varMax = aryVariables(lngL)  lngMaxCount = 1  For lngN = lngL + 1 To UBound(aryVariables)   If varMax < aryVariables(lngN) Then    varMax = aryVariables(lngN)    lngMaxCount = 1   ElseIf varMax = aryVariables(lngN) Then    lngMaxCount = lngMaxCount + 1   End If  Next    Wscript.Echo lngMaxCount    '--- 戻り値の配列を作成する  ReDim aryResult(lngMaxCount - 1)  lngL = LBound(aryResult)  For lngN = LBound(aryVariables) To UBound(aryVariables)   If varMax = aryVariables(lngN) Then    aryResult(lngL) = lngN    lngL = lngL + 1   End If  Next    '--- 戻り値を設定する  MaxVariables = aryResult End Function '--- 配列を出力する Sub Array_Write(strTitle, aryValues)  Dim strResult, lngN  strResult = strTitle & "(" _   & UBound(aryValues) - LBound(aryValues) +1 & ")"  For lngN = LBound(aryValues) To UBound(aryValues)   strResult = strResult & " " & aryValues(lngN)  Next  Wscript.Echo strResult End Sub ---- ココマデ

参考URL:
http://www.kawabata.com/
noname#573
質問者

お礼

御礼が遅くなってすいません。 たいへん助かりました。 ありがとうございます。

その他の回答 (1)

noname#271
noname#271
回答No.1

VBScriptだけではないですが以下のような感じで 作成すると最大値が求められると思います。 #BASICは、久しくやってないので #適当に修正してください int MAX MAX = 0 if MAX < A then MAX = A end if if MAX < B then MAX = B end if if MAX < C then MAX = C end if print MAX

noname#573
質問者

補足

質問が悪かったようです。最大値ではなくて、A,B,Cの変数のうち、どれが最大の値をもつ変数であるかを知りたいのです。その場合、考えられるパターンは、A、B、C、AとB、AとC、BとC、AとBとC、の7通りがあります。これをIf文で書くと結構長いコードになるので何かもう少し簡潔に書けないかなぁと思いまして質問をいたしました。 よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう