Program nie liczy sumy.

0

Witam :)

Wraz z rozbudową programu przyszły nowe problemy i zagwozdki.

Mój aktualny problem polega na tym iż nie wiem czemu ale program źle liczy wartość Sumy... w zasadzie to w ogóle jej nie liczy. Suma powinna być równa 522.500. Nie mam zielonego pojęcia w czym może tkwić błąd. Próbowałem zamiast pętli "While" dać "for", "if" i nadal 0.

I tak na marginesie... nie wiem czemu, ale jak w pętli "for" w instrukcji kroku podawałem "x = x + 0.5" to program się zapętlał. Co jest tego powodem? :)

PrtScr Konsoli:
http://img138.imageshack.us/img138/3197/whr5.jpg

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

float x;
float Krok = 0.5;
int Koniec = 10;
float Suma;

float f(float x)
{
   return x*x - 36;
}

int main()
{
        cout << "Podaj Pozycje: ";
        cin >> x;

         for(x; x <= Koniec;/*x=x+0.5*/)
        {
            cout
            << setw(7) << x << " | "
            << setw(7) << f(x) << " | "
            << setw(7) << abs(f(x)) << " | "
            << setw(7) << (  abs( f(x) ) + abs( f(x + Krok) )  )/2 << endl;
            x = x + Krok;
        }

        while(x < Koniec)
        {
          Suma = Suma + (  abs( f(x) ) + abs( f(x+Krok) )  )/2;
          x = x + Krok;
        }
     cout << Suma; //suma wszystkich wartosci z trzeciej kolumny, i ta suma powinna byc rowna 522,500
}


Ignotis :)

0

Na początku powinno być float x = 0; i float Suma = 0;.
Zmienne lokalne powinno przed użyciem inicjalizować się zerami, inaczej mogą tam znajdować się śmieci.
Albo możesz zrobić zmienną statyczną -

static float x;

wtedy od razu ma wartość 0.

0

Poprawiłem na: float x = 0 i float Suma = 0 i nadal w wyniku otrzymuje 0 :)

0

Po pętli for już "zepsułeś" x więc while nie robi żadnego kroku.

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