Mam problem, nie wiem dlaczego ale coś niepoprawnie działa mi program do wyznaczania pierwiastków f. kwadratowej metodą siecznych...Czy mógłby mi ktoś pomóc i odnaleźć błąd??
Bo tyle patrze na to i nie mogę znalezc bledu
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double kwa1(double x)
{int a,b,c,d;
d=a*x*x+b*x+c;
return d;
}
int main(int argc, char *argv[])
{int i=64;
float x0,x1,x2,f1,f2,f0,fkwa0,fkwa1,fkwa2;
int e,nr;
float a,b,c,d;
printf("
======================================================================
");
printf("podaj wspolczynniki a,b,c
");
scanf("%f",&a);scanf("%f",&b);scanf("%f",&c);
printf("podaj x1,x2
");
scanf("%f",&x1);scanf("%f",&x2);
fkwa1=kwa1(x1);
fkwa2=kwa1(x2);
while (i>0 && abs(x1-x2)>0.000001)
{
if (abs(fkwa1-fkwa2)<0.000001)
{
printf("nie zostaly spelnone warunki/brak pierwiastkow
");
break;
}
x0 = x1 - fkwa1 * (x1 - x2) / (fkwa1 - fkwa2);
fkwa0 = kwa1(x0);
if(fabs(fkwa0) < 0.000001){printf("przyblizony pierwiastek : %f
",x0);
break;}
x2 = x1;
fkwa2 = fkwa1;
x1 = x0;
fkwa1 = fkwa0;
i--;
if (i==0) printf("nie znaleziono pierwiastka
");break;} printf("======================================================================
");
printf("aby zakonczyc nacisnij ENTER");
while (!kbhit());
return 0;
}