-1

さて、当選番号に最も近い一連の数字を推測しようとしています (引き分けの可能性は無視します) 当選番号が 15 であるとしましょう。

また、当選数を超えないようにしたいです。最後の条件は、すべての推測が大きすぎる場合、勝者がいないということです。

数値は次のとおりであるとします。

12
9 
7
13
4
0

プログラムで当選番号として 13 を選択するようにします。

これは私が書いたコードの抜粋です:

corrrectGuess = 15
while(contestantGuess != 0) {
    if(contestantGuess <= correctGuess) {
        winningGuess = contestantGuess;
    }
}

しかし、それはすべての数字を勝利の推測にします。

誰かが適切な if ステートメントを作成するのを手伝ってくれますか、疑似コードだけを書くことも役に立ちます。

4

3 に答える 3

0

比較を行うには、最小の差を追跡するための変数が必要です。

int guesses[6] = { 12, 9, 7, 13, 4, 0};
int target = 15, win = -1, minDiff = 1000, diff;

foreach number in guesses //go through each number in the array
{
    if (number == target) //if number matches, you're done
    {
        win = number;
        break;
    }
    else if (number < target) //only proceed checking if number is less than target
    {
        diff = target - number;
        if (diff < minDiff) //if found a closer winner
        {
            minDiff = diff; //update the min difference
            win = number; //set the winner to the current number
        }
    }
}
于 2013-07-01T15:10:09.987 に答える
0

勝者に近づく変数を作成します。

const int SIZE = 6;
int inputs[SIZE] = {12,9,7,13,4,0};
const int winningNumber = 15;
int matchIndex = -1;
int matchDifference = INT_MAX;
for(int i = 1; i < SIZE; ++i){
 int difference = std::abs( winningNumber - inputs[i]); //find the difference, how far apart
 if(difference < matchDifference){ //if smaller difference, i.e closer to winning number
   matchIndex = i; //save new closer data info
   matchDifference = difference;
 }       
}

std::cout << "Closest winning number to " << winningNumber << " is : " << inputs[matchIndex]  << endl;
于 2013-07-01T14:52:21.897 に答える