tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
引数の中で最小の正値を返す関数(VB6.0)_7 ( No.7 )  [親スレッドへ]
日時: 2011/04/05 13:09
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[基本コード][][]                                               *
* キーワード:プロシージャ,複数の引数,配列処理,コードの簡略化,,                   *
***********************************************************************************

-----------------------------------------------------------------------------
Re^7:完璧です - ダンボ   2004/09/09-11:17 No.358
-----------------------------------------------------------------------------

黒影さん、重ね重ねありがとうございます。美しいです。たった5行にまとめられましたね。

・IIfは処理速度が遅いこと
・アルゴリズムの流れがコーディングからは一目で読み取れない、
の2点が工業製品としてのプログラミングからは排除されるべき欠点でしょうが、今回、
皆さんに提起したのは芸術作品としてのプログラミングですので、これで完成形と思います。

ところで、kazuやん、黒影さんのお2人のアイデアをいただいて、私のコーディングは
下記でFIXしようかと思います。前提条件が少し変わりました。
・3引数では足りない場合もありそうなので4引数、5引数にも対応したい。
・長い文字列のInstr結果ではIntegerではあふれるのでLongとする。
ParamArrayを使う関係上、型宣言がVariantとなりちょっと気持ち悪い。

'**********************************************************
'*  pMin        :引数の中で最小の正値を返す。但しすべて0なら0を返す
'*  i,N(可変)   :いずれも、0または正整数
'*  戻り値      :最小の正値、又は0
'**********************************************************
Private Function pMin(i As Long, ParamArray N() As Variant) As Long

    Dim min As Long  '最小値
    Dim j As Variant

    min = i
    For Each j In N
      min = IIf(min > j, IIf(j = 0, min, j), IIf(min = 0, j, min))
    Next j
        
    pMin = min
End Function



 [スレッド一覧へ] [親スレッドへ]