2016-06-09 8 views
-5

我能夠運行該程序,但它沒有做它應該做的。它一直在問號碼。 (用C語言編寫)爲什麼程序不斷要求輸入C?

算法我試圖遵循的是 -
第1步:猜的值設置爲1
第2步:如果|猜測^ 2 - X | (ε=ε)
步驟3:將猜測值設置爲(x/guess + guess)/ 2並返回到步驟2.
步驟4:猜測是平方根。

This is the output I am getting

#include <stdio.h> 

float sqr_root(float n); 
float absolute_value(float n) ; 

int main(void) 
{ 
    float n ; 
    printf("Enter a positive number :"); 
    scanf("%f" , &n); 

    printf("Square root of %f is %f \n" , n , sqr_root(n)); 

} 


float absolute_value(float n) 
{ 
    if (n < 0) 
    { 
     n = -n ; 
    } 
    return (n) ; 
} 

float sqr_root(float n) 
{ 
    const float epsilon = 0.00001 ; 
    float guess = 1.0 ; 

    float value = absolute_value((guess * guess) - n) ; 

    while (value > epsilon) 
    { 
     guess = ((n/guess) + guess)/2 ; 
    } 


    return guess ; 
} 
+0

向我們展示您所看到的。 –

+2

'while(value> epsilon)'循環永遠不會進入/結束,因爲'value,epsilon'不會改變數值..也許重新計算'value = asolute_value((guess * guess) - n);'in循環? – chux

+0

這是輸出http://i.stack.imgur.com/d4CsI.png –

回答

1

while (value > epsilon)循環永遠不會進入/結束,因爲value, epsilon不改變價值。

添加value = asolute_value((guess * guess) - n) ;以糾正拼寫循環。

while (value > epsilon) 
{ 
    guess = ((n/guess) + guess)/2 ; 
    value = absolute_value((guess * guess) - n) ; 
} 
相關問題