Obliczanie sumy ciągu 1/(3*i+1)

Odpowiedz Nowy wątek
2014-12-15 23:24
Wielki konar
0

Cześć, chce napisać program który policzy sumę ciągu suma = suma +- 1/(3i+1) dla i = 0, 1, 2, ... n dopóki
wyrażenie (3
i+1) jest mniejsze od n.

Przykład dla n = 11
s = 1/1 - 1/4 + 1/7 - 1/10 + 1/13 =~0,8697

Może ktoś wskazać mi błąd, ponieważ program stale pokazuje, że suma = 1.00000
:)

#include <stdio.h>
#include <conio.h>

const int n = 11;

double ciag(int n) {

    double suma = 0.0;
    int i = 0;

    for (int i = 0; (3 * i + 1) < n; i++)
    if (i % 2 == 0)
        suma = suma + (1 / (3 * i + 1));
    else
        suma = suma - (1 / (3 * i + 1));

    return suma;
}

int main() {

    printf("suma wynosi = %f", ciag(n));

    getchar();
    return 0;
}

Pozostało 580 znaków

2014-12-15 23:40
1
  1. suma = suma + (1. / (3 * i + 1));
  2. s = 1/1 - 1/4 + 1/7 - 1/10 ponieważ 13 nie jest mniejsza od 11
  3. Wystarczy tyle:
    
    #include <stdio.h>

double ciag(int n)
{
double suma=0.0,mul=1;
for(int i=1;i<n;i+=3,mul*=-1) suma+=mul/i;
return suma;
}

int main()
{
printf("suma wynosi = %lf\n", ciag(11));
// zamiast getchar(); zamień IDE na jakieś z tego tysiąclecia.
return 0;
}


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2014-12-15 23:48

Pozostało 580 znaków

2014-12-15 23:52
Wielki konar
0

Dzięki, napisałem sporo niepotrzebnego kodu ale teraz wszystko działa jak należy.
Widać jeszcze sporo nauki przede mną.

Pozostało 580 znaków

2014-12-16 00:16
Zimny Samiec
0

to nie chodzi o niepotrzebny kod, tylko zgodnie z tym co kolega napisal, zapomniales o konwersji miedzy float a int, bo dzielenia robily ci sie na intach

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