2013-03-16 2 views
-2
float squareRoot(float value, float error){ 

    float estimate; 
    float quotient; 
    estimate = 1; 
    float difference = abs(value - estimate * estimate); 
     while (difference > error){ 
      quotient = value/estimate; 
      estimate = (estimate + quotient)/2; 
      difference = abs(value - estimate * estimate); 
     } 
     return difference; 
} 

Моя функция не будет компилироваться, поскольку она продолжает говорить, что «x не объявлена» в основной функции (не может быть изменена), что я делаю неправильно?Сквартальная аппроксимация (C)

int main(){ 
    printf("\nsquare root test 1: enter a number\n"); 
    scanf("%f",&x); 
    printf("root(%.2f) = %.4f\n", x, squareRoot(x, .001)); 

    getchar(); 
    return 0; 
} 

ответ

1

объявить е первых, чтобы использовать его внутри основной функции

float x; 

, как это с в объеме или вы можете объявить глобально

int main(){ 
    float x; 
    printf("\nsquare root test 1: enter a number\n"); 
    scanf("%f",&x); 
    printf("root(%.2f) = %.4f\n", x, squareRoot(x, .001)); 

    getchar(); 
    return 0; 
} 
+0

Кроме того, если 'main()' не может быть изменено, тогда 'x' необходимо объявить в области файлов. – 2013-03-16 05:57:59

+0

@ H2CO3 Что вы подразумеваете под 'main()' нельзя изменить? – SomeWittyUsername

+0

@icepack. "в основной функции (нельзя изменить), [...]" – 2013-03-16 08:23:43

1

Если й не может быть объявлены в основной функции , затем объявить его в глобальном масштабе,

float x; 

int main() { 
    ... 
} 
0
int main(){ 
    float x ; /* You missed this :-D */ 
    printf("\nsquare root test 1: enter a number\n"); 
    scanf("%f",&x); 
    printf("root(%.2f) = %.4f\n", x, squareRoot(x, .001)); 

    getchar(); 
    return 0; 
} 
Смежные вопросы