2013-10-29 207 views
0

我想创建一个exponent函数,它似乎没有按预期工作。对不起,如果我不明白一些基本的东西,我只是在互联网上学习点点滴滴。功能不正常?

float x; 
float y; 
float z; 
int h; 
int j; 

float exponent (float a, float b) 
{ 
    float r; 
    while(b > 1) 
    { 
     r = a * a; 
     b = b - 1; 
    } 
    return (r); 
} 

^带有变量的函数的片段。

cout << "EXPONENT MODE\n\n"; 
cout << "Please enter a number: ";  
cin >> x; system("CLS"); 
cout << "Please enter another number as the exponent for the first: "; 
cin >> y; 
z = exponent(x, y); 
cout << "Calculating the answer, please wait"; 
Sleep(1000); 
cout << "."; 
Sleep(1000); 
cout << "."; 
Sleep(1000); 
cout << "."; 
Sleep(1000); 
cout << "\n\nYour answer is : "; 
cout << r; 
Sleep(5000); 
system("CLS"); 
cout << "Would you like to calculate another set of numbers? (yes = 1, no = 2) : "; 
cin >> h; 
system("CLS"); 

^第I部分要在控制台上执行。(只是代码)

基本上,我希望用户输入2号,第一(X)作为基数,所述第二(Y )是指数。程序应该输入x作为a和y作为b并运行该函数。发生了什么事:输入1:5,输入2:3,预期:125,收到:25.我在考虑改变while(b> 0)。如果你们能帮上忙,那就太棒了! (也不要判断我在system("CLS")的代码)

+1

你的指数函数将只计算正方形('a * a')。 – congusbongus

+0

...重复。 *相同*正方形。而当你修复它时,你最好在将'r'初始化为'1.0'。当然,这不会使用分数指数,所以'b = 1.5'就会失败。 – WhozCraig

+0

我看到了我的数学错误。但是如果我输入5,3不应该输出为25 * 25,因为5 * 5 = 25? –

回答

0

这很简单,你打印错误的变量。

cout << "\n\nYour answer is : "; 
cout << r; 

rexponent本地成员变量。在main范围的exponent结果实际上是存储在一个名为z

z = exponent(x, y); 

的修复只是改变你的答案打印代码

cout << "\n\nYour answer is : "; 
cout << z; 

为自己的利益,你可能变想要尝试给你的变量赋予更多有意义的名字,并且只在实际需要的范围内声明它们。我没有看到你在主要其他地方使用r,你是否试图在exponentr这个地方访问?

+0

+1打印错误的变量,但除了'b == 2',打印'z'的单个案例不会更准确,因为函数本身已被破坏。 – WhozCraig

+0

似乎他正在修复指数函数本身,似乎只是纠缠在他自己给出的疯狂变量名称的干草堆上(请参阅编辑答案;) – kfsone

+0

函数返回'r',所以'cout << z;'工作?此外,这些只是我为var名称放置字母的基本程序。虽然我看到了数学部分做错了什么。 –

-1

我不介意@kfsone在说什么。 但在循环中r每次都设置为* a,这不就是为什么你得到的是方形而不是指数?我认为你真正想要做的是:

r=1 
while(... 
    r *= a;// note to accumulate result on r 
    b --; 
+0

'z = exponent(x,y); cout <<“计算答案,请稍候”;'后面跟着点打印,然后是'cout <<“\ n \ n您的回答是:”; cout << r;' 缩写形式:'z = exponent(...);'...'cout << r'。相当简单。 – kfsone