• ベストアンサー

配列にある値との比較チェック

VB6です。 myArray や myValueのような配列がある場合で、 pValueがその中に含まれるかどうか判定しよう とする場合、カウンター(i)やFor Each を使って 総当たりチェックする以外に方法はないのでしょうか? たとえば、SQLなんかで使う In や Not In は ダメなのでしょうか? Public myCheck(pValue as String) AS Boolean myArray AS String myValue(6) AS Sting myArray = Array("日","月","火","水","木","金","土") myValue2(0) ="日" myValue2(1) ="月" myValue2(2) ="火" myValue2(3) ="水" myValue2(4) ="木" myValue2(5) ="金" myValue2(6) ="土" End Function

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

データの集合に、「データ構造」を持ちこむと、探すときは速くすることが可能です。 しかし整頓(ソート)したり、構造を構築する(例えば目次に当たるインデックスなどやBツリー構造・ハッシュ法など)時間がかかります。 (1)何回も繰り返しその状態を利用する(アクセスする) (2)使うときは,検索結果が出るのを急ぐ 例えば、お客様を待たせている銀行の窓口機やATMなど。 (3)(2)が問題になるのは、データ数が多いからの したがってディスクの読み書き回数が多くなる場合が殆ど。 の場合には、メリットがあります。 極端な場合は、トランザクションの無く、余裕時間のある夜間に構造を再構築し、昼の利用時に速くする用意をしたりします。 たまにしか使わないとか、データ数が少ないとか、人間にとって1,2秒のことなら、似た繰り返し回数が少ない場合は総舐め法でも良く、プログラマの美的感覚・職人感覚の問題でしょう。 コンピュタの初期のころに比べCPU・ディスクの処理速度が速くなり、使用メモリも飛躍的に多くなっている昨今では、総なめ法が行われるケースは増えていうかも。 SQLも裏で、マシンに実装するために、裏方的処理が行われていますが、表に見えないようにしているだけです。 アプリの関数なども、元のコードまで見てみれば、総なめ比較して判別しているかも知れません。コードは公開されず、分かりませんが。 データが中途に多い場合は、データをソートする必要がありますが、2分法がやりやすいように(個人的)に思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

ハッシュ関数+バイナリサーチ でどうでしょ。

全文を見る
すると、全ての回答が全文表示されます。
  • kachimi
  • ベストアンサー率40% (12/30)
回答No.1

ないと思います。このサンプルのFunctionが何をしたいのかは分かりませんが、もし曜日を求めるのでしたらWeekDay関数が存在します。 曜日 = myvalue2(weekday(日付))

urourojp
質問者

補足

ご回答ありがとうございます。 曜日を使ったのは一例で、これが商品一覧や顧客一覧でもいいのです。 そのプロシージャは判定の部分が抜けていますが、ゲットしたパラメータが一覧にあればTrue、そうでなければFalseを返したいのです。 とりあえずは For Each で総当たりにしていますが・・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 曜日の順番

    曜日の順番は、何故、日、月、火、水、木、金、土?太陽系でなら、日、水、金、火、月、木、土になりますが、何故ですか?

  • エクセルの棒グラフ、データの無い場所を表示しないようにするには?

    例えば、 月、火、水、木、金、土、日 5、0、8、9、6、8、0 のようなデータがあった場合に、 グラフにすると、 月、火、水、木、金、土、日 が出ると思います。 これを 月、水、木、金、土 でグラフを作成されるようにするにはどうすればいいでしょうか?? 補足:もし、水曜が0になったら、水曜を非表示にするみたいな設定です。

  • 排卵日の推定をお願い致します

    10月の排卵日の推定をして頂けますでしょうか。 生理周期は28~31です。 9月⇒10月は31日周期、10月⇒11月は30日でした。 どうぞ宜しくお願い致します。 10/1(水) 36.50 2(木) 36.71 3(金) 36.51 4(土) 36.50 5(日) 36.77 6(月) 36.70 7(火) 36.76 8(水) 36.76 9(木) 36.77 10(金) 36.85 11(土) 36.79 12(日) 36.72 13(月) 36.45 生理初日 14(火) 36.53 15(水) 36.43 16(木) 36.88 17(金) 36.65 18(土) 36.79 生理終了 19(日) 36.52 20(月) 36.12 21(火) 36.25 22(水) 36.66 23(木) 36.54 24(金) 35.86 P-check反応なし 25(土) 36.30 P-check薄く1本 卵白状のおりもの2回。 26(日) 36.39 P-check薄く1本。 27(月) 36.16 P-checkくっきり2本。下腹軽い鈍痛 28(火) 36.30 P-checkうっすら2本 下腹結構痛い。 29(水) 36.30 P-check反応ほとんどなし 下腹午前中軽い鈍痛。 30(木) 36.39 下腹痛い気がする。 1(土) 36.48 左下腹が少し痛い 2(日) 36.42 夕方に右下腹痛い。 3(月) 36.53 4(火) 36.58 5(水) 36.64 6(木) 36.79 7(金) 36.76 8(土) 36.80 9(日) 36.84 10(月) 36.46 11(火) 36.57 12(水) 36.49 生理初日 13(木) 36.13 14(金) 36.30

  • 大手の飲食業界のパート勤務について

    パートに出るのははじめてで,ハローワークに相談しても詳しいことは教えてくれません。 大手の飲食業界に限らず,飲食業界って,いじめなど人間関係で止める人が多いと聞きますが,本当のところどうなんでしょうか? シフトで,(1)~(3)に分けられている場合,(1)と➁の時間帯を続けて働くことはできるのでしょうか? (1)08:00~17:00(月 火 水 木 金 土 日) (2)17:00~22:00(月 火 水 木 金 土 日) (3)22:00~08:00(月 火 水 木 金 土 日)

  • エクセル 連続勤務数のチェック

     バイトAのシフトが以下の場合                                 チェック   日 月 火 水 木 金 土 日 月 火 水 木 金 土 ・・・  週 日 日 夜 非 夜 日 日 週 日 夜 日 夜 非 ・・・ ○  週=週休、非=非番  日=日勤、夜=夜勤  日 月 火 水 木 金 土 日 月 火 水 木 金 土 ・・・  週 夜 日 非 夜 日 日 日 夜 夜 週 非 日 夜 ・・・ ×  チェックの判定は連続勤務が5日を超えていなければ○、  超えていれば×です。  ○×を表示する関数はどうなりますか?

  • java プログラム

    今日が月曜日として、3日ごとの曜日を 次のように100日後まで出力するプログラム 月、木、日、水、土、火、金、月、木、日、水、土、火、金、......

  • Excel関数 複数条件を満たす個数の集計

    以下のような場合に、 月と金の○の数を集計したいのですが どのような関数を使えばいいでしょうか・・・  月 火 水 木 金 土 日 月 火 水 木 金 土 日  ○ × ○ ○ × ○ × ○ ○ × × ○ × ○ SUMPRODUCTを使ってやろうとしたのですがうまくいきませんでした^^;;(ちなみにエクセルは2003です) 宜しくお願い致します!

  • 基礎体温について。

    基礎体温について。 先月不正出血があったのでリセットしてから基礎体温をつけ始めました。一応は陥落日もあり、二相性になっているとは思いますが、不安なので見てください。 21日(火)  36.60 月経開始 22日(水) 36.23 23日(木) 36.25 24日(金) 36.19 25日(土) 36.20 月経終了 26日(日) 36.24 27日(月) 36.26 28日(火) 36.19 29日(水) 36.28 30日(木) 36.68 10月01日(金)36.28 02日(土) 36.32 03日(日) 36.46 04日(月) 35.99 陥落日 05日(火) 36.37 06日(水) 36.44 07日(木) 36.74 08日(金) 36.65 09日(土) 36.76 10日(日) 36.85 11日(月) 36.64 12日(火) 36.68 13日(水) 36.75 14日(木) 37.06 15日(金) 36.68 この場合高温期は7日からになるのでしょうか? また妊娠に向けてアドバイスなどくださると嬉しいです。

  • 日進月歩リンク表

    このような表に、 日付 曜日 商談数 成約数 成約率 実績 着地 1 土 2 日 3 月 4 火 5 水 6 木 7 金 8 土 9 日 10 月 11 火 12 水 13 木 14 金 15 土 16 日 17 月 18 火 19 水 20 木 21 金 22 土 23 日 24 月 25 火 26 水 27 木 28 金 29 土 30 日 下記のデータが他のシートからリンクされています。 (これは日々、更新されています。) 日付     商談数  成約数 成約率   実績     着地 9/3 月 12件  2件   17%  ¥160,000  ¥890,000 このリンクされているデータを上記のカレンダーの該当する日付の行に貼り付けられていくにはマクロを組むしかないのでしょうか?

  • 妊娠の可能性。

    二人目を希望しています。いつもなら下がるはずの体温も維持していますので、期待しているのですが・・ 3(火) 36.62 生理開始 4(水) 36.57 5(木) 36.61 6(金) 36.65 7(土) 36.58 生理終わり 8(日) 36.60 ☆ 9(月) 36.56 10(火) 36.47 ☆ 11(水) 36.60 12(木) 36.50 ☆ 13(金) 36.43 14(土) 36.29 15(日) 36.62 ☆ 16(月) 36.23 排卵痛 排卵検査薬+ 17(火) 36.66 〃  - 18(水) 36.60 19(木) 36.42 ☆ 20(金) 36.59 21(土) 37.08 22(日) 36.78 23(月) 36.74 24(火) 36.93 25(水) 36.89 26(木) 36.96 27(金) 36.88 28(土) 37.07 29(日) 36.75 30(月) 36.86 ☆=性交です。 昨夜、早期妊娠検査薬を試しましたが、陰性でした。 周期は29日です。もう可能性はないでしょうか?

いきなりPDFのトリミング方法
このQ&Aのポイント
  • いきなりPDFでのトリミング作業がうまくいかない場合、枠が出るが実行できない問題が発生します。この問題を解決するためには、いくつかの方法があります。
  • まず、いきなりPDFのバージョンを最新のものに更新することをおすすめします。時々、新しいバージョンではトリミングのバグが修正されていることがあります。
  • また、トリミングがうまくいかない場合は、PDFファイル自体に問題がある可能性も考えられます。他のPDF管理ソフトで試してみるか、元のPDFファイルを再度作成してみることも検討してください。
回答を見る