2013-10-24 3 views
-6

Я также ввел include<math.h>, но он все еще не работает. Люди говорят, что я вхожу, но я не знаю этого, где я помещаю -Им, и как я могу это исправить.C program sqrt не работает

#include <stdio.h> 
#include <stdlib.h> 
#include<math.h> 

int main() 
{ 
    float a=0, b=0, c=0, root1=0, root2=0; 

    printf("Enter the value of a,b and c to determine the roots\n"); 
    scanf("%f%f%f",&a,&b,&c); 

    root1=(-b+sqrt(b*b-4*a*c))/(2*a); 
    root1=(-b-sqrt(b*b-4*a*c))/(2*a); 

    printf("The first roots of the quadratic equation are\nFirst root=%.1f\nSecond root=%.1f",root1,root2); 


    return 0; 
} 
+5

Это поможет, если вы сообщите нам, как это «не работает». Вы получаете сообщение об ошибке? Какая ошибка? –

+3

Вы должны назначить второй корень 'root2', а не перезаписывать' root1'. Вы должны проверить, что вход успешно выполнен. Вероятно, вы должны проверить, что 'b * b' не меньше, чем' 4 * a * c'. –

+3

Вы можете попробовать составить свою программу следующим образом: «gcc prog.c -o prog -lm» –

ответ

0

Две вещи: сначала вы копируете вставку «root1» дважды, так что вы потеряете значение «плюс», а root2 будет равно нулю. Во-вторых, для блага других, проблема, скорее всего, во время компиляции и Googled ответ есть:

http://www.cs.cf.ac.uk/Dave/C/node17.html

И вы должны проверить для мнимых значений:

if(b*b-4*a*c < 0){ 
     printf("error: complex solution unsupported, see http://en.wikipedia.org/wiki/Square_root\n"); 
     exit(1); 
    } 
0

У вас есть копипаст ошибка здесь:

root1=(-b+sqrt(b*b-4*a*c))/(2*a); 
root1=(-b-sqrt(b*b-4*a*c))/(2*a); 

должно быть:

root1=(-b+sqrt(b*b-4*a*c))/(2*a); 
root2=(-b-sqrt(b*b-4*a*c))/(2*a); 

Также вам может потребоваться ссылка на математическую библиотеку, например.

$ gcc -Wall foo.c -o foo -lm 
Смежные вопросы