błąd w kodzie jezyk c

0

miałam do napisania program, który liczy pole pod wykresem wielomianu trzeciego stopnia, przybliżenie do prostokątów, niby wszystko jest okej, ale nie wiem czemu pokazuje mi jakiś błąd, zamiast wyliczać pole, mógłby mi ktoś pomóc?
EDIT: wyskakuje mi 1.#INF00

 

#include<stdio.h>

int main()
{
double a, b, c, d;
printf("\nPodaj wartosc wspolczynnika a: ");
scanf("%f", &a);
printf("Podaj wartosc wspolczynnika b: ");
scanf("%f", &b);
printf("Podaj wartosc wspolczynnika c: ");
scanf("%f", &c);
printf("Podaj wartosc wspolczynnika d: ");
scanf("%f", &d);

double poczatek, koniec;
printf("\nPodaj poczatek przedzialu: ");
scanf("%f", &poczatek);
printf("Podaj koniec przedzialu: ");
scanf("%f", &koniec);

int n;
printf("\nNa ile czesci chcesz podzielic przedzial?: ");
scanf("%i", &n);
double dx = (koniec - poczatek)/n;
double x = poczatek;
double wartosc;
double suma = 0;
int i;
for(i=0; i<n; i++)
{
	wartosc = a*x*x*x+b*x*x+c*x+d;
	suma = suma + wartosc*dx;
	x = x + dx;
}
printf("\nPole pod wykresem podanej funkcji w podanym przedziale wynosi: %f\n", suma);
return 0;

}

1

Nie potrzebujemy pliku cpp w załączniku, tylko informacji co to za błąd. Jakiś błąd jest bardzo słabą informacją, a niewielu się chce odpalić Twój program, żeby zobaczyć co mu wyskoczy. W dodatku błąd może być zależny od danych wejściowych.

0

już dodałam, może ktoś zauważył coś w składni? no nie wiem

1

Wygląda jakby wartość była zbyt duża, żeby mogła zostać przechowywana w double albo gdzieś masz dzielenie przez 0. Próbuj dla innych danych wejściowych, które dają mniejszy wynik.

0

1.#INF00 pojawia sie przez dzielenie przez 0

0

próbowałam i znów to samo, tylko z minusem

0
  1. użyj
scanf("%lf", &zmiennna);

dla typu double
2) do obliczania x użyj wzoru x = poczatek + (i + 1)*dx;
http://kaczus.ppa.pl/art/liczbyzmiennoprzecinkowe,19.html

0

Użyj scanf_s zamiast scan i oczywiście zastosuj się do rady kaczus.

1 użytkowników online, w tym zalogowanych: 0, gości: 1