分からないので例を挙げてください。softya(ソフト屋)さん、返信ありがとうございます。4については、私のNo6のポストに添付のコードを参照ください。puts("no");と書かれているのですが、これをmain関数の最後(solve();行の直後)に持ってきても、同じことかどうかということです。私が手本にしている本に載ってるこのプログラムではsolve内にありますが、これは何かこだわりがあってそうしているのか、それとも定番の表記法だからか、たまたまか、という質問です。n)となるそうですが、このlog2n(2は下付き)はどういう計算で出てきたのでしょう?下付きの2は、毎回2分する2から来ているように想像できますが、それくらいしか思いつきません。ご存知でしたら教えてください。バイナリサーチの特徴は、二分を繰り返していくところです。二分を繰り返すということは、文字どうり2で割っていくということです。操作回数は長さn'が1になった時の2で割った回数です。m回の操作で、nの長さまで調べられるといった風に言い換えると1回の操作で、22回の操作で、43回の操作で、84回の操作で、16といった風になります。...となり、2のm乗となります。よって、mはlog2(n)で求められます。puts("no");と書かれているのですが、これをmain関数の最後(solve();行の直後)に持ってきても、同じことかどうかということです。私が手本にしている本に載ってるこのプログラムではsolve内にありますが、これは何かこだわりがあってそうしているのか、それとも定番の表記法だからか、たまたまか、という質問です。fはグローバル変数なので、fの値はsolve関数を出ても保持されているので、slove();の次に持ってきても問題はないです。関数の処理をどこで分けるかは非常に難しい問題ですね。今回は、solve関数で出力までの処理を完結させたかったので関数内で出力をしたのでしょう。これだと、他の文字列を表示させたかったり、真偽で場合分けしたかったりした場合は、solve関数をいじらなければならいのであまりよろしくありません。グローバル変数を使ってるというのも、どこからでも値を変えられたりしてよろしくありません。trueかfalseをただ単に返すだけにして、あとは呼び出し元任せにした方がよいと思います。9年前bitter_foxさんバイナリサーチの説明ありがとうございます。対数と指数をネットでしらべてなんとか感覚はつかめました。no11にもお答えいただき感謝です。ありがとうございます。関数の型の宣言を重複してするようで少し違和感がありますが、そういう仕様なのですね。これですっきり解決しました。binary_search(int);これは関数のプロトタイプ宣言(Declarations)です。x){・・・}これは関数の定義(Definitions)で、宣言ではありません。従って重複しているわけではありません。定義されていない場合(main関数が前にある場合)には関数プロトタイプ宣言が必要です。C言語ではプロトタイプ宣言なしで使用することもできますが、引数、型のチェックが行われないので、その後の処理が保障されません。9年前4.使っている問題集で、main関数の中最後に標準出力puts、coutがあるかと思えば、別の呼び出される関数(最後によびだされる関数)の中に標準出力が書かれていたりします。9年前C++であれば関数内関数(のようなもの)は次のように作れます。0;}functor(ファンクタ)は()演算子のオーバーライドを利用しています。このようなクラス(のインスタンス)は関数オブジェクトと呼ばれます。lambda(ラムダ)式は簡単に関数オブジェクトの定義できるようにC++0xで採用されることになっています。C++は2010、gcc(g++)は4.5以降(要-std=c++0xオプション)でコンパイルできます。解決ってのを押しとくのを忘れてました。maruさん、補足説明ありがとうございました。関数solveが呼ばれることによって問題を解く形式を用いることにします。ミクプラは自由にリンクできます。