[C] Pętla obliczanie ciągów

0

Program obliczać ma coś takiego dla podanej granicy
1.0-1.0/2.0+1.0/3.0-1.0/4.0....

może mi to ktoś sprawdzić??

#include <stdio.h>

int main(void)
{
        float x=1.0, y=2.0, z;
        int i, j, a;

        z=x;

        printf("Podaj maksymalna ilosc liczb do zsumowania: ");
        scanf("%d", &a);

        for(i=0; i<a; i++)
        {
                if((i+1)%2==0)
                {
                        z=z+x/y;
                        y++;
                }
                else
                {
                        z=z-x/y;
                        y++;
                }
        }
        printf("%f\n", z);


        system("pause");
        return 0;
}
0

Niestety program działa niepoprawnie - można to sprawdzić kalkulatorem, poza tym deklarujesz dużo niepotrzebnych zmiennych a jednej nawet nie używasz.

#include <stdio.h>

int main()
{
	int i, l;
	float suma = 0;
	
	printf("Podaj maksymalna liczbe cyfr do zsumowania: ");
	scanf("%d", &l);
	
	for(i = 1; i < l + 1; i++)	
		if(i % 2 == 0)
			suma -= 1.0 / i;
		else
			suma +=  1.0 / i;
	
	printf("%f", suma);
	
	return 0;
} 
0
for(i = 1; i < l + 1; i++)        
                if(i % 2 == 0)
                        suma -= 1.0 / i;
                else
                        suma +=  1.0 / i;

dla i=1
coś mi tu nie pasuje
pierwszy warunek tą będzie 1%2=1
więc warunek niespełniony wybiera druga opcję

suma=0+1.0/1

a powinno być 1.0+1.0/2.0

jeśli źle myślę to proszę popraw mnie

0

Pierwszym wyrażeniem w ciągu jest tak naprawdę 1.0 / 1.0 czyli 1.0, zmienna suma ma przypisaną wartość 0, więc przy pierwszym obrocie pętli suma zwiększa się o 1.0 czyli o pierwsze wyrażenie.

0

ok kapuje, tylko tam przy dzieleniu nie powinno się zrobić (float)i.

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