Cały czas sam próbuje coś zdziałać ale będe wdzięczny za wszelkie wskazówki. Pozdrawiam i prosze o pomoc.
Kod: Zaznacz cały
#include <stdio.h>
#include <math.h>
double a,b,c,eps;
int n,i;
double wspol[6];
double f (double x)
{
return f(x);
}
int main ()
{
printf("Podaj stopień wielomianu: ");
scanf("%d", &n);
for (i=n ; i>=0 ; i--)
{
printf("a[%d]: ",i);
scanf("%d", &wspol[i]);
}
printf("Podaj poczatek przedzialu: ");
scanf("%lf", &a);
printf("Podaj koniec przedzialu: ");
scanf("%lf", &b);
if (f(a)*f(b) >= 0) /* tw. Bolzano ? Cauchy?ego */
{
printf("Niewłaściwe dane wejściowe!");
return 0;
}
printf("Podaj zadana dokladnosc: ");
scanf("%lf", &eps);
while (b-a>eps)
{
c=(a+b)/2;
if (f(a)*f(c)<0)
b=c;
else
a=c;
}
printf("\nPierwiastek znajduje sie w punkcie x = %.4f",(a+b)/2);
return 0;
}
EDIT:
Już sobie poradziłem. Ale może sie komuś przyda więc pokazuje poprawny kod:
Kod: Zaznacz cały
#include <stdio.h>
#include <math.h>
double wspol[6];
double f(double x)
{
double r=0;
for(int p=6-1;p>=0;--p)
r=r*x+wspol[p];
return r;
}
int main ()
{
double a,b,c,eps;
int n,i;
printf("Podaj stopień wielomianu: ");
scanf("%d", &n);
for (i=n ; i>=0 ; i--)
{
printf("a[%d]: ",i);
scanf("%lf", &wspol[i]);
}
printf("Podaj poczatek przedzialu: ");
scanf("%lf", &a);
printf("Podaj koniec przedzialu: ");
scanf("%lf", &b);
if (f(a)*f(b) >= 0) /* tw. Bolzano ? Cauchy?ego */
{
printf("Niewłaściwe dane wejściowe!");
return 0;
}
printf("Podaj zadana dokladnosc: ");
scanf("%lf", &eps);
while (b-a>eps)
{
c=(a+b)/2;
if (f(a)*f(c)<0)
b=c;
else
a=c;
}
printf("\nPierwiastek znajduje sie w punkcie x = %.4f",(a+b)/2);
return 0;
}