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

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;
}
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;
  }
0

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

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

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