0

C++ を学習しようとしていますが、解決しようとしている問題があります。基本的に、数値の平方根を計算する必要があります。私は正しい軌道に乗っていると思いますが、コードを実行すると、数値を入力しても何も起こりません。ここに画像の説明を入力

int n;
    double r, intGuess, guess, ratio;

    // user input
    cout << "Enter number: ";
    cin >> n;

    intGuess = n;
    guess = n / 2;
    ratio = intGuess / guess;

    while (ratio >= 1.01 || ratio <= 0.99)
    {
        r = n / guess;
        guess = (guess + r) / 2;
    }

    cout << endl;
    cout << "The square root of " << n << " is " << guess << endl;
4

2 に答える 2

4

ループratio内で更新しないため、ループは無限のようです...条件がtrue1回の場合、それはtrue永遠です...

次のようになります。

ratio = intGuess / guess;

while (ratio >= 1.01 || ratio <= 0.99)
{
    intGuess = guess;           // Save the previous value of guess
    r = n / guess;
    guess = (guess + r) / 2;
    ratio = intGuess / guess;   // Update ratio here with the previous and the
                                // actual value of guess
}

また:

推測が前回の推測の 1% 以内になるまで

前のものを保存し、元のものではなく、guessこれを使用する必要がありますratio

このアルゴリズムの実例。ループに 2 行追加しました。

于 2013-09-10T21:53:31.760 に答える