0
指数のべき乗に基数を計算するコードを作成しています。任意のBaseと非負の指数を入力すると、コードが正しいように見えます。XをNの倍数にします。負の指数ではコードが機能しません
コードは以下の通りです:
#include <iostream>
using namespace std;
int n; //The Exponent
int x; //The Base
double result;
int main(){
pleaseInput:
cout << "Enter Base: ";
cin >> x;
cout << "Now enter Exponent: ";
cin >> n;
//If the base is 0 could be tricky...
if(x==0){
if(n==0){
//0^0 = 1
result = 1;
}else if(n>0){
//0^3 = 0
result = 0;
}else if(n<0){
//0^-2 is undefined.
cout << "0 to the power of a negative exponent is an undefined math operation. Please enter valid data. " << endl;
goto pleaseInput;
}
//If the base is other than 0...
}else{
//If the exponent is not 0...
if(n!=0){
//Make the exponent unsigned to know the amoun of iterations regardless its sign.
unsigned int exp = (unsigned int)n;
result = 1;
for(int i=0;i<exp;i++){
result *= x;
}
//If the exponent was negative...
if(n<0){
result = 1/result;
}
//If X^0....
}else{
result = 1;
}
cout << x <<" to the power of "<< n <<" equals "<< result << endl;
}
}
君たちを見て、間違いがどこにあるか私が見つけるのを助けることができますか?
ありがとうございます!ギルモモ。 。
この行 'unsigned int exp =(unsigned int)n;'はあなたが望むことをしません。デバッガを使って、 'n'が負のときに代入の後で' exp'を調べます。 –
FYIそこには、宿題の問題ではないと仮定して、標準の関数std :: powがあります。 – iehrlich
FYI 2.0:= [0^0は1ではありません] –