# bisection method

• 02-07-2009
swty_todd
bisection method
here is the c program for arriving at a solution using bisection method.
The ouput is going infinte..pls help ....i think it has more of syntax errors than logical errors...

Code:

```main() {         float a,b,c,x1,x2,x,series;         double d;         printf("enter a,b,c and x1(pos) & x2(neg)");         scanf("%f%f%f%f%f", &a, &b, &c, &x1, &x2);         read:         x = (x1 + x2) / 2;         series = a * x * x + b * x + c;         d = fabs(series);         if (d > 0.0001)         {                 if (x * x1 < 0)                         x = x2;                 else                         x = x1;                 goto read;         }         else         {                 printf("ans=%f", x);         }         return 0; }```
• 02-07-2009
vart
it should be

int main(void)

you should work on your indentation

goto read; - there are several cases where usage of goto has its reasons. Your case is not one of these. So write your code using while loop
• 02-07-2009
swty_todd
hey thnx vart.....!!!
• 02-07-2009
swty_todd
hey i edited it ....bt its still not workin...help...

Code:

```#include<stdio.h> #include<math.h> main() {float a,b,c,x1,x2,x,series; double d; printf("enter a,b,c and x1(pos) & x2(neg)"); scanf("%f%f%f%f%f",&a,&b,&c,&x1,&x2); x=0; d=1;  while(d>0.0001)     {       x=(x1+x2)/2;           series=a*x*x+b*x+c;           d=fabs(series);               if(x*x1 < 0)             x2=x;         else             x1=x;     }     printf("ans=%f",x); return 0; }```
• 02-08-2009
vart
you have doe notinnk with the line
if(x*x1 < 0)

suppose x1 = 1, x2 = 3, than x = 2

think about right condition to get rid of the half of the interval