C - szereg

Odpowiedz Nowy wątek
2015-01-20 22:44
0

Oblicz wartość następującego wyrażenia dla x podanego przez użytkownika: (wzór do zadania w załączniku)

Chodzi o to żeby wykonać ten program, bez użycia biblioteki <math.h>. Mi już skończyły się pomysły, może coś podpowiecie?

#include <stdio.h>
int main()
{
    int x, n=1, i;
    double f=0, s=1;  

    printf("Podaj liczbe x: ");
    scanf("%d", &x);

    for (i=1; i<=10; i++)
        {
            f=f+s;
            s=-s*(x*x)/n;
            n=n+1;           
        }

    printf("Wynik to: %.2lf", f);

    return 0;
} 

Pozostało 580 znaków

2015-01-20 22:48
0

Oho, kolega co temat niżej założył, chyba z tej samej polibudy jest.

Pozostało 580 znaków

2015-01-20 22:51

ciezko podpowiedziec zeby nie zrobic rownania :) wiec sprobuje pokolei Ci wyjasnic

pierwsze mamy -1 do potegi n co na dobra sprawe jest po to zeby rownanie albo mialo + albo - Czyli jezeli N jest parzyste na poczatku bedzie 1 jezeli nieparzyste to -1
nastepnie mnozymy przez X (ktore wczytujemy z klawiatury) do potegi N.

cos do potegi N mozna napisac bardzo prosto potrzebujesz napisac funkcje (wygoogluj co to jest) na takiej zasadzie

int potega(int podstawa, int wykladnik); 

tutaj masz deklaracje, definicje napisz sam

co ma robic? A tam ma byc petla ktora idzie od 2 do wykladnika ( i<=wykladnik )

wiec zrobiles juz to X do potegi masz wynik dzialania juz pomnozony przez 1 albo -1 a teraz wystarczy podzielic przez N

To robisz w kazdym obiegu petli. Wynik (zmienna stworzona przed petla) bedzie rosl zgodnie z wyliczeniami

Pozostało 580 znaków

2015-01-20 23:16
0

Czyli mam napisać nową funkcję do potęgowania, a potem ją zaimplementować do maina?

edytowany 1x, ostatnio: QuePasa, 2015-01-20 23:16
No inaczej sie nie da. - _borisov8 2015-01-20 23:17

Pozostało 580 znaków

2015-01-20 23:17
0

skoro nie rozumiesz tego co napisalem. Wez do reki pierwszy lepszy kurs dotyczacy jezyka C i sie go ucz.

Pozostało 580 znaków

2015-01-20 23:20
0

Własnie chciałem się upewnić czy rozumiem. Po co od razu być takim opryskliwym?

Pozostało 580 znaków

2015-01-21 09:34
2

Tu nie powinno się stosować potęgowania bo bardzo szybko szereg wyczerpie zakres liczb.

Podpowiedź:

a(1) = -x
a(i) = -a(i-1) * (x / i)

Suma = suma(i=1..10, a(i))

</del>

Poprawka:

xp(1) = -x
xp(i) = -xp(i-1) * x
a(i) = xp(i)  / i

Suma = suma(i=1..10, a(i))

Szacuje się, że w Polsce brakuje 50 tys. programistów
edytowany 1x, ostatnio: vpiotr, 2015-01-22 20:08
i zrobiła ci się silnia, której tam nie ma :P - MarekR22 2015-01-22 16:58
hmm, poprawione. - vpiotr 2015-01-22 20:08

Pozostało 580 znaków

2015-01-22 16:40
0

w dobrym kierunku idę, czy kompletnie beznadziejnym?

#include <stdio.h>

int potega(int x, int y)
{
    int i, s=1;
    for(i=1;i<=y;i++)
    s*=x;
    return s;
}

int main()
{

    int x=2, y, n=1, w=1, i, p;
    double f=0.0;

//  printf("Podaj liczbe x: ");
//  scanf("%d", &x);

        y=n;
        p=potega(x, n);

        for (i=1; i<=10; i++)
        {
            f=f+w;
            w=-w*(p/n);
            n++;           
        }

    printf("Wynik to: %.2lf", f);

    return 0;
}

Pozostało 580 znaków

2015-01-22 16:54
0

Po cholerę ta funkcja potęgowania? To jest niepotrzebne, wręcz przeszkadza!
Masz szereg, czyli sumę ciągu. Masz zrobić pętlę for i przy każdej iteracji obliczyć kolejny element ciągu i dodać go do jakiejś zmiennej. Jeśli dobrze to napiszesz to kolejny element ciągu będzie obliczany na podstawie poprzedniej iteracji.
Mógłbym dać gotowca, ale tu chodzi, żebyś ruszą troszkę głową.
Zacznij tak:

double szereg(double x) {
    double sum = 0;
    double a= 1.0;
    for (int i=1; i<=10; ++i) {
         a *= ...
         sum += ...
    }
    return sum;
}

Podobne do tego co podpowiada @vpiotr, ale on zrobił mały błąd.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22, 2015-01-22 17:00
Więc powinienem jednak iść w kierunku tego co miałem na samym początku? - QuePasa 2015-01-22 17:32
w sumie tak, ale tam masz poważne błędy! Poza tym napisanie tego w osobnej funkcji jest bardziej czytelne i łatwiejsze w zrozumieniu. - MarekR22 2015-01-22 22:55

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