2016-06-09 2 views
-5

나는 프로그램을 실행할 수 있지만 그 프로그램을 실행하지 못한다. 계속 번호를 묻습니다. 1.
2 단계로 추측의 값을 설정 :
1 단계 - (C로 작성) 내가 따라하려고프로그램이 C로 입력을 요청하는 이유는 무엇입니까?

알고리즘입니다 | 추측^2 - x 일부 | < ε, 4. (ε = (ε))
단계 3 단계로 진행 (X/추측 + 같다)/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

'value, 엡실론'이 값을 변경하지 않기 때문에'while (value> 엡실론)'루프는 결코 입력/종료되지 않습니다 .. 아마도 'value = asolute_value ((guess * guess) - n); – 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) ; 
} 
관련 문제