-PR-
解決済み

VBScriptで

  • 暇なときにでも
  • 質問No.12737
  • 閲覧数453
  • ありがとう数11
  • 気になる数0
  • 回答数2
  • コメント数0

 変数(整数)A,B,Cの三つのうち、最大であるものを見つけるには、どういったコードが一番すっきりしているでしょうか?
If Then Elseif~ しかないのでしょうか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル8

ベストアンサー率 67% (21/31)

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
---- ココマデ
お礼コメント
noname#573

御礼が遅くなってすいません。
たいへん助かりました。
ありがとうございます。
投稿日時 - 0000-00-00 00:00:00
関連するQ&A
-PR-
-PR-

その他の回答 (全1件)

  • 回答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 & ...続きを読む
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文で書くと結構長いコードになるので何かもう少し簡潔に書けないかなぁと思いまして質問をいたしました。
よろしくお願いいたします。

投稿日時 - 2000-11-13 20:56:27


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ