algorytm do 1^3 + 2^3 + ... + n^3

0

Dlaczego nie wychodzi. Dla n=3 pokazuje sumę: 738?

#include <stdio.h>

int main()
{
int n, i, suma, a;
printf("Podaj liczbe naturalna: \n");
scanf("%d", &n);

suma=0;
a=1;

for(i=1; i<=n; ++i)
{
    a=a*a*a;
    suma=suma+a;
    a++;
}

printf("Suma szecianow wynosi: %d", suma);

}

1

Nigdzie nie resetujesz a więc po 2 iteracji, twoje a=8 w 3 już masz a=9*9*9=729 (bo na końcu dodajesz +1). Więc sumując z pierwszego suma=1, w drugim suma=9 w trzecim suma=738.

1

Czy ktoś może podpowiedzieć?

Zmień tę linię na, a = i * i * i;, i wywal, a++;.

2

Po co ci zmienna a? Przecież już iterujesz po i i możesz zrobić tak:

suma = suma + (i * i * i)
0

Tu lepiej widać
Czy ktoś wie gdzie jest różnica w poniższym? Pierwszy źle liczy, drugi liczy dobrze. Mi wydaje się, że to jest jedno i to samo, ale czymś się to musi różnić
for(i=1; i<=n; ++i)
{
i=iii;
suma=suma+i;
}

for(i=1; i<=n; ++i)
suma+=iii;
printf("S(%d) = %d", n,suma);

0

widzę, że ten kod się niewyraźnie wkleja

for(i=1; i<=n; ++i)
{
i=iii;
suma=suma+i;
}

for(i=1; i<=n; ++i)
suma+=iii;
printf("S(%d) = %d", n,suma);

0
for(i=1; i<=n; ++i)
    
    {
        i=i*i*i;
        suma=suma+i;
    }

  for(i=1; i<=n; ++i)
    suma+=i*i*i;
    printf("S(%d) = %d", n,suma);
1

Z tego samego powodu, dla którego pierwszy kod nie działał.

0
Jeśli ktoś wiedziałby czy dobrze myślę w poniższym, to będę wdzięczny za wyjaśnienie.

Chyba rozumiem, ale nie jestem pewien. W 1 kodzie i w pętli ma nadaną wartość =1, następnie w nawiasach i=i*i*i , suma wynosi 1, następnie ++i zwiększa i do 2, w nawiasach i=i*i*i, czyli i = 8, suma wynosi 9, następnie ++i zwiększa i o 1 do 10? Czy to o to chodzi? W drugim kodzie i zwiększa się cały czas tylko o 1. Tylko zastanawia mnie dlaczego w 1 kodzie pokazuje w wyniku 9, przy n 3. Tego nie rozumiem, jak komputer to liczy?```
1

Nie masz debuggera, żeby podejrzeć co tam sie dzieje? Na kartce, jeśli rozumiesz składnię pętli, for też to możesz rozpisać.

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