このループを見てください:
for (int i=0; i<=x; i++)
a= a*a;
cout << "The answer is: " << a;
}
このループを通過するたびに、a 自体を乗算します。ユーザーが数字 a 0を入力したとします。それで:
- 0 回の反復の後、 a の値は a 0になります。
- 1 回の反復後、a の値は a 0 2になります
- 2 回の反復の後、a の値は a 0 4になります
- 3 回の反復後、a の値は a 0 8になります。
- ...
たとえば、a = 2 で x = 4 の場合、値は 2、4、16、および 256 になり、必要以上に大きくなります。
これを修正するには、ループを変更して、最初は 1 に設定されている 2 次変数を使用して、a を掛け続けます。そうすれば、各反復で乗算する値を変更しません。
次に、ループの実行回数が多すぎることに注意してください。xまでループするため、ループはx + 1回実行されるため、xを計算したい場合は間違った値が得られます。これを正確に x 回ループするように変更してみてください。
最後に、print ステートメントは反復ごとに実行されるため、すべての中間値が表示されます。print ステートメントがループの外側になるようにコードを変更します。
それをすべて行った後、pow
関数を調べてください。これが課題の場合、この機能を使用できない可能性がありますが、この問題を解決する最も簡単な方法です。
お役に立てれば!