sumowanie w pętli

Odpowiedz Nowy wątek
2019-01-31 22:56
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

#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: furious programming, 2019-02-01 00:42

Pozostało 580 znaków

2019-01-31 23:15
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?

Pozostało 580 znaków

2019-01-31 23:56

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.

#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, 2019-01-31 23:58

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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