私はBjarneStroustrupの「C++を使用したプログラミングの原則と実践」を経験しています。私は第4章、演習4にいます。
演習は次のとおりです。
数字を推測するゲームをプレイするプログラムを作成します。ユーザーは1から100までの数字を考え、プログラムはその数字が何であるかを理解するために質問をします(たとえば、「あなたが考えている数字は50未満ですか?」)。プログラムは、7つ以下の質問をした後、番号を識別できる必要があります。ヒント:<および<=演算子とif-else構文を使用してください。
今ではそれは素晴らしいことです、そして私はそれをうまく実装することができました。
私は自分自身をプッシュして、ループを使用してこれを実装し、毎回下限または上限を調整しようと思っていました。
これが私のコードです:
#include "std_lib_facilities.h"
int main( ){
int count = 0;
int lowerBound = 0;
int upperBound = 100;
string userInput = "";
while ( lowerBound != upperBound ){
// Increment count
++count;
int halfRange = 0;
// Make halfRange a while number, round up if any decimal portion.
double range = ( upperBound - lowerBound ) / 2;
int rangeDelta = range - (int)range;
if ( rangeDelta != 0 )
halfRange = (int)range + 1;
else
halfRange = range;
cout << count <<": Is your number between " << lowerBound << " and " << lowerBound + halfRange << "? ";
cin >> userInput;
// Reset the bounds
if ( userInput == "y" || userInput == "Y" )
upperBound -= halfRange;
else if ( userInput == "n" || userInput == "n" )
lowerBound += halfRange;
else {
--count;
cout << "Error! Answer could not be understood.";
}
}
cout << "lowerBound: " << lowerBound << ", upperBound: " << upperBound << "\n\n";
cout << "Your number is: " << lowerBound << "\n";
return 0;
}
問題?さて、それは小数部分があり、小数部分を捨てる整数除算を使用している数値に到達したときに発生します。数値48を使用すると、プログラムは47と47を推測します。
私を動かすための手がかりはありますか?私はかなり近いと思いますが、助けていただければ幸いです。
ありがとう、
マット