[C++] Problem z liczeniem sumy

0

Mam do napisania prosty program który ma obliczać taką sumę:
S(n) = 1/(23) + 1/(34) + ... + 1/((n-1)*n)

oto mój kod:

 
int main()
{
	int n;
	double Sn, a;
	Sn = 0;
	cout << "podaj liczbe calkowita n:";
	cin >> n;
	if (n < 3)
		Sn = 0;
	else
		for (int i=3; i==n; i++)
		{
			a = 1 / ( (i - 1) * i);
			Sn = Sn + a;
		}
	cout << endl << "S(n)=" << fixed << Sn << endl;
	
	system("pause");
}

Program działa tak, jakby nie było nic po else, tzn dla każdej wartości n >= 3 suma Sn = 0. Co jest nie tak?

0

Wynikiem dzielenia dwóch liczb całkowitych jest liczba całkowita zrób np. tak: a = 1.0 / ( (i - 1) * i);

0

Niestety, nie pomogło. Nie pomaga również zmiana typu zmiennej i.

0

Masz jeszcze zły warunek stopu w pętli

0
       for (int i=3; i<=n; i++)
        {
            a = 1.0 / ( (i - 1) * i);
            Sn = Sn + a;
        }
0

Rzeczywiście, po zmianie na i<=n działa. Wielkie dzięki :) Mógłbyś mi jeszcze wyjaśnić, czemu nie może być i==n?

0

Bo for pracuje tak długo aż warunek jest spełniony, a nie odwrotnie.

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