sumowanie w pętli

sumowanie w pętli
E8
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Warszawa
  • Postów:6
0

Witam. Mam do napisania program liczący długość krzywej. Długość krzywej w przybliżeniu będzie równa długości łamanej. Napisałem program liczący długości odcinków łamanej w pętli dla zadanego przedziału x [1,16]. Zamiast tego muszę zsumować odcinki i wypisać całą długość i tu nie wiem jak takie sumowanie skonstruować ;) Proszę o pomoc

Kopiuj
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define M_E     2.71828182845904523536
#define f(x) cos(x * x) + x * pow(M_E, x) / 7 - sin(log(x))

int main()
{
    float x;
    double y;
    float x_poprz;
    double y_poprz;
    float dl;

    for (x = 1; x <= 16; x = x + 0.01)
    {
        y = f(x);
        x_poprz = x - 0.01;
        y_poprz = f(x_poprz);

        dl = sqrt((x - x_poprz)*(x - x_poprz) + (y - y_poprz)*(y - y_poprz));
    }

    printf ("Dlugosc luku wynosi: %.5f\n", dl);

    getche();
    return 0;
}
edytowany 1x, ostatnio: flowCRANE
Bartosz36
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:348
0

Jeśli dobrze rozumiem (a jest to trudne, bo nazewnictwo zmiennych leży) to dl jest długością pojedynczego odcinka, Ty natomiast próbujesz szesnaście razy obliczyć coś i wpakować to wciąż do tej samej zmiennej dl.
Czym ta zmienna jest? Gdybyś nadał jej dokładniejszą nazwę, na przykład dlugosc_odcinka, albo calkowita_dlugosc_luku, to byłoby nam łatwiej ;)

Może jeśli masz kolejne długości (odległości) od kolejnych szesnastu punktów, to sumuj je po każdej iteracji?


ExtendedVector czyli std::vector<T> z wygodą List<T> z .NET (ForEach, FindAll, itd...)
lion137
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Postów:4944
1

Przeanalizuj to jeszcze, ale wygląda, że jest dobrze, zgodnie z sugstią powyżej, zsumowałem długości, zmieniłem też funkcję na prostszą do stestowania:) - pierwiastek z dwustu to długość funcji y = x od zera do dziesięciu.

Kopiuj
#include <stdio.h>
#include <math.h>
#define M_E     2.71828182845904523536
//#define f(x) cos(x * x) + x * pow(M_E, x) / 7 - sin(log(x))
#define f(x) x

int main()
{
    float x;
    double y;
    float x_poprz;
    double y_poprz;
    float dl = 0;

    for (x = 0; x <= 10; x = x + 0.01)
    {
        y = f(x);
        x_poprz = x - 0.01;
        y_poprz = f(x_poprz);

        dl += sqrt((x - x_poprz)*(x - x_poprz) + (y - y_poprz)*(y - y_poprz));
    }

    printf ("Dlugosc luku wynosi: %.5f, %.5f\n", dl, sqrt(200));

    return 0;
}

edytowany 2x, ostatnio: lion137

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.