• ベストアンサー

処理について

taunamlzの回答

  • taunamlz
  • ベストアンサー率20% (175/843)
回答No.2

すみません。書き損じです。 1、それぞれのflgの数重視なら for(i=0;i<3;i++) if (flg & 0x01) {  cnt ++; } flg = flg >> 1; } } です。

7u7
質問者

お礼

ご返答ありがとうございます。 ただ申し訳ないのですが、 私の質問内容が不完全でtaunamlz様に勘違いをさせてしまいました。 まず、フラグの内容は「true」か「false」です。 そしてクラスにフラグの状態を詰め込む際、「ONの数」が最重要ではなく(重要な事には変わりませんが) 全てのフラグパターンの状態をクラスに詰め込まなければならないです。 【フラグ1=ON フラグ2=OFF フラグ3=OFF】と 【フラグ1=OFF フラグ2=ON フラグ3=OFF】では 結果的にはONフラグが1本ですが、 フラグ1のみONは前者のみ、フラグ2のみONは後者のみ、と 完全に別物です。 αも例文では3としていますが、 1の場合もありますし、9の場合もあります。 この事を考慮して頂けたら幸いです。

関連するQ&A

  • イベントの発生を待つ

    現在、テキストボックスへの文字入力を待つプログラムを作っております。 Form.Load()によって呼び出されるプロシージャの中で、フォームのテキストボックスへのキーの入力があるまで待機するプログラムとなっております。 方針としては、まずBoolean型のフラグを用意し、まずTextBoxのKeyPressイベントでこのフラグをオンにし、メインのプロシージャでは必要個所でDoループを回してこのフラグを確認し、オンになっていたらオフにしてループを抜け出すというプログラムです。 このループの中にSleep()関数を入れたりしても、ループのところでアプリケーションがフリーズしてしまいます。(ブレークポイントなどで確認しました) もっと効率のよい方法をご存知でしたらご伝授ください。 (KeyPressイベントの中に直接処理を書けばいいじゃないか、とおっしゃるかもしれませんが、今回はあくまでメインプロセスから読む必要があったため、質問をさせていただきました。)

  • プログラミング処理可能な人感センサー

    人感センサーで単純にオン・オフしたりするものは巷に溢れていますが、センサーの感知結果を、USBなどを介してパソコンにバイナリやテキストなどの形式で送信するものはありますか?プログラミングで処理できるものがあったらいいなと。

  • 数値フラグの判定方法

    ビットフラグの方法ではなく 数値フラグの計算というか判定の方法の話なのですが、 C++でファイルから設定を読み込む時、 1つの整数にフラグをまとめ様としているのですが、 パターン1  :1の位 10の位 100の位 1000の位・・・ とわけて位毎に3~5種程のフラグを持たせている場合の、10・100の位の取り出し方 パターン2  :On/Offだけで、1・2・4・8・16・32・・・・・とわけている場合の、2・4・8・16の部分の取り出し/判定方法 ビットでの操作はシンプルだったので理解できたのですが、 数値としての場合、どう計算すれば任意の場所を取り出せるのでしょうか? 初歩的な事かもしれませんが、検索しても計算方法を見つけきれませんでした; どなたか教えて頂けると幸いです。 っ_ _)っ

  • 重たい処理のタイムアウト強制終了

    ある重たい処理(正確には重くなる可能性がある処理)があります。たとえば、あるクラスAにあるpublic void method()がそれに該当するとします。 このメソッドを実行したいのですが、ある一定の時間が経過したら、タイムアウトとして、強制的に終了させたいという要望があります。 スレッドを使えば良いのかなとは思いました。しかし、ネットでスレッド関連の情報を検索しても、呼び出されるmethodのなかでループして、終了フラグを参照する類のサンプルばかりでした。ところが、クラスAは他者が提供したモジュールであるため、勝手に変更することが出来ません。 なにか良い方法はありますでしょうか?

    • ベストアンサー
    • Java
  • アセチル化の後処理について

    アセチル化の後処理について 最近アセチル化の実験を行ったのですが その後処理について質問があります。 アセチル化した物質を得るために まず、酢酸エチルを用いて分液したのですが その後、0.5M HCl→水→飽和NaHCO3→水の順で洗いました。 この洗浄の順番にどのような意味があるのでしょうか? それぞれ、どのような役割を果たしているのでしょうか? 回答いただけたら幸いです。 よろしくお願いします。

  • マルチスレッド内のループについて

    こんにちは。 開発環境は VC++6.0 SDI マルチスレッドがあり、2つの処理を行う関数が書かれています。 このスレッドはダイアログボックスに配置したストップボタンを押すとフラグFALSEになりループを終了させます。 2つの関数は、int型の整数を引数にして、処理を行います。 整数はある値に達すると 0 になり永遠にループを続け、2つの処理を行います。 と言う意味合いでプログラムを書きました。(書いたつもりです) (1)この書き方ですと、for内のループが動いている時に、右上の×ボタンでダイアログを閉じると [Debug Assertion Failed!]と言う警告文が出て強制的に終了してしまいます。 ストップボタンを押してもcount=10になるまではループしています。(当然ですが・・。) そもそもマルチスレッドの中にこのような形でfor文を入れるのは間違っているのでしょうか? どのような書き方にすれば良いのでしょうか? よろしくお願い致します。 bool m_flags;//スレッド内の処理を続けるか示すフラグ UINT CabcDlg::thread(LPVOID pParam)// { CabcDlg *pInst = (CabcDlg *) pParam; while(pInst->m_flags){//ストップボタンが押されると終了する。 for (int count = 0; count<10; count++ ) { pInst->OnSend(count); //処理A pInst->OnReceive(count);//処理B } } return 0; }

  • 組み合わせを作るアルゴリズム

    アルゴリズムについてうまい考えが浮かばず、お知恵を拝借できればと思い質問致しました。 要件は、値が100個ほど入った配列があり、この配列から任意の個数の値を取り出して処理をする、というものなのですが、とにかく全ての組み合わせを取り出したいのです。 例えば @data = (3, 6, 8, 6); という配列から2個取り出すとすれば、 (3, 6) (3, 8) (3, 6) (6, 8) (6, 6) (8, 6) という全6パターンが欲しいのです。(パターンの出現順は無視できます。) 順番違いはなくてよいので、たとえば (6, 3) というリストはなくて結構です。 また (3, 6) のように、全く同じリストが複数出現してもOKです。 取り出す個数が固定ならばforループのネストで処理のしようもあるのですが、任意ということでここの処理方法が浮かびません。 (ちなみにrは最大で10まで取り、できればforのネストも避けたいところなのですが。) このような処理に適した処理方法をご存知の方おられましたら、ぜひともご教授ください。 よろしくお願い致します。

    • ベストアンサー
    • Perl
  • [大至急]5つの数字のパターンは?

    1,2,3,4,5 番のスイッチを見立てた数字があり、 これを以下のようなパターンで考えるとどの様な組み合わせ数になるのか? また、それを記述していただいたらうれしいです 1,-,-,-,- 1,2,-,-,- 1,2,3,-,- 1,2,3,4,- 1,2,3,4,5 ※必要ないパターン 2,3,1,4,5 2,-,3,5,- 順番が入れ替わる必要はありません つまり、 1だけがONの時にはこの処理を行う 1と3だけがONの時にはこの処理を行う などの様に、1~5個のスイッチ条件の組み合わせをプログラムで作りたいのです。 よろしくお願いします。

  • ループ処理を抜けた時点での処理回数を表示したい

    今、以下のような「green」が配列の何番目にあるのか調べるプログラムを考えています。 具体的な処理としては、配列の値を順番に調べて「green」を見つけたらループをぬけて何番目にあったかを表示する、といった処理になります。 ただ、現時点ではループをぬけた時何番目だったのかを取得できないでいます。 $numを取得して表示するにはどのような処理を行えばよいでしょうか。 解説していただけると幸いです。 ---プログラム--- class hoge{ function hoge(){ $this->color = array("red", "blue", "pink", "white", "black", "gold", "yellow"...,"green",...); } function test(){ for($i = 0;$i < count($this->color);$i++){ if($this->color[$i] == 'green'){ echo $this->color[$i]."\n"; break;###ここでループをぬける } } echo "緑は${num}番目"; } } $a = new hoge(); $a->test(); ---

    • ベストアンサー
    • PHP
  • VBSの勉強中です

    VBSの勉強中のためにうまく質問できないかもしれません。 ある関数を作成して「Do while 条件」にてループ処理をしています。 条件は特定の文字列が入力されたら実行するようにしています。 ここで別の文字列が来たらループの処理を終了させたいのですが、 具体的にはどのようにしたらよいのでしょうか? イメージとしては「ON」するとループ処理が始まり、「OFF」にすると処理が止まる というようなイメージです。 どなたか方法をご教授いただければと思います。