Przy makrze dokładność pojawia się error: expected declaration specifies or '...' before numeric specifies. Problem pojawia się również gdy jako przedział podam np. 1.0 5.0 gdzie powinno zwrócić c=3,05 jednak program nic nie zwraca ma ktoś pomysł jak mógłbym go poprawic?
#include <stdio.h>
#define FUNKCJA(x) (x)*(x)-2*(x)-3
#define DOKLADNOSC 0.1
double polowienie_przedzialow(double a, double b, DOKLADNOSC)
{
double srodek;
double c;
if(FUNKCJA(a)==0.0)return a;
else if(FUNKCJA(b)==0.0)return b;
else if((FUNKCJA(a)>0 && FUNKCJA(b)>0) || (FUNKCJA(a)<0 && FUNKCJA(b)<0))
printf("W podanym przedziale pierwiastek nie musi istniec.");
else{
while(b-a > DOKLADNOSC)
{
srodek = (a+b)/2;
if(FUNKCJA(srodek) == 0.0) //jesli miejsce zerowe jest w srodku
return srodek;
if(FUNKCJA(a)*FUNKCJA(srodek)<0)
b = srodek;
else
a = srodek;
}
c=(a+b)/2;
printf("%lf",c);
}
return 0;
}
int main()
{
double a;
double b;
printf("Podaj dwie liczby(lewy i prway koniec przedzialu): ");
scanf("%lf %lf",a,b);
polowienie_przedzialow(a,b, DOKLADNOSC);
return 0;
}