2

助けが必要です。実数値 a と正の値の整数 x を指定してxを計算したいと思います。

私のプログラム:

#include <iostream>
using namespace std;

int main()
{
int a, x;

cout << "Input a: ";
cin  >> a;
cout << "Input x: ";
cin  >> x;

for (int i=0; i<=x; i++)
    a= a*a;
    cout << "The answer is: " << a;
}
4

4 に答える 4

7

このループを見てください:

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関数を調べてください。これが課題の場合、この機能を使用できない可能性がありますが、この問題を解決する最も簡単な方法です。

お役に立てれば!

于 2013-10-14T05:49:23.787 に答える
4

いくつかのエラーがあります:

for (int i=0; i<=x; i++)

x+1これは、意図したものではなく、何度もループします。

a= a*a;

これを行うたびに、aすでに乗算されている値になるため、結果を格納する別の変数が必要になります。

int result = 1;
for (int i=0; i<x; i++)
    result *= a;  
}
cout << "The answer is: " << result;

最後に、 を計算するa^xintは、多くの実際のケースでは小さすぎる可能性があります。 のようなより大きな型を検討してlong longください。

于 2013-10-14T05:50:35.170 に答える
1
    int result = 1;
        for (int i=1; i<=x; i++)
        {
          result= result*a;
        }

            cout << "The answer is: " << result;
        }

これがうまくいくことを願っています

于 2013-10-14T05:51:51.910 に答える