Witam!

Napisałem program obliczający całkę sin(x) metodą trapezów. Jest jednak pewien błąd. Wartość liczb ma być podana w stopniach i program powinien liczyć to w radianach. Jak każdy wie całka z sin(x) w granicach od 0 do 2pi = 0. Gdy podaje mu w programie granice od 0 do 360 podaje mi wynik ok. 1,28. Oczywiście zadeklarowałem mu konwersje stopni na radiany:

a=(a*M_PI/180.0f);
b=(b*M_PI/180.0f);

ale zdaje się, że programowi to bez różnicy. Wrzucam kod, może ktoś wychwyci błąd, i może komuś któryś fragment się przyda ;). Program niestety napisany w Borland Builder C++ (taki wymóg).

double a,b,n,x,y,s=0,w=0;
// M_PI - liczba PI

a = Edit1->Text.ToDouble(); // z edita 1 odczytuje pierwsza granice
b = Edit3->Text.ToDouble(); // z edita 3 odczytuje drugą granice
n = Edit4->Text.ToDouble(); // z edita 4 odczytuje liczbę przedziałów do sumowania

y = b-a; // b-a (długość przedziału)
x=y/n; // Obliczenie delX

if (RadioButton2->Checked==true) // RadioButton2 - opcja wyboru w czym się wpisuje wartość (tutaj stopnie)
{

a=(a*M_PI/180.0f);
b=(b*M_PI/180.0f);

for (int i=1; i<n; i++)
      {
       s=s+sin((a+(i*x)));
      }
      s=(s+((sin(a)+sin(b)))/2)*x;
      Edit2->Text=s;

}

... itd.