C - zadania z ciągami w funkcji

Odpowiedz Nowy wątek
2019-12-10 17:34
0

Witam.
Mam do zrobienia takie zadania:

  1. Napisz funkcję, który dla wartości k podanej z klawiatury (całkowitej) wyznaczy i zwróci sumę liczb naturalnych danych ciągiem {0, 1,2³, ..., k³}.
  2. Napisz funkcję wypisującą elementy szeregu matematycznego, dla n podanego z klawiatury będącego parametrem wywołania funkcji. Funkcja ma obliczać i zwracać sumę szeregu.
    Wzór ogólny szeregu:
    screenshot-20191210173056.png

Nie mam kompletnie pojęcia jak się za to zabrać. Największy problem sprawa mi zapisanie obliczeń dla tych funkcji. Proszę o pomoc i wytłumaczenie.
Pozdrawiam.

Pozostało 580 znaków

2019-12-10 17:36
kq
0

A co już próbowałeś? Do potęgowania użyj pow z math.h, reszta to zwykłe użycie pętli.


Pozostało 580 znaków

2019-12-10 17:56
0

Program pyta o k, a później już się nie wykonuje. Gdzie mam błąd?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int potega(x)
{
    int wynik=1;
    int a=0, b=1, c=2, i, p, pot;
    for(i=0; i<p; i++)
    {
        pot=pow(0,3) + pow(1,3) + pow(2,3) + pow(x,3);
    }
    return pot;
}

int main()
{
    int k, x, suma=1;
    printf("Podaj k: ");
    scanf("%d", &k);
    suma=potega(x);
    printf("Suma liczb naturalnych wynosi:", suma);
    return 0;
}
Kompilator aż wyje od ostrzeżeń, może warto je przeczytać - AnyKtokolwiek 2019-12-10 18:09

Pozostało 580 znaków

2019-12-10 18:45
0

Słyszałeś o iteracji?

int sumOfPowersThree(int n) {
    int s = 0;
    for (int i = 0; i <= n; ++i){
        s += pow(i, 3);
    }
    return s;
}

Drugie tak samo, tylko trzeba wstawić ten trochę bardziej skomplikowany wzór, zwraca floati acha, nie Zapomnij dać (bo n będzie intem) (1.0F/n) * itd...


edytowany 2x, ostatnio: lion137, 2019-12-10 19:34

Pozostało 580 znaków

2019-12-10 19:39
0

@lion137 doprawdy na każdym kroku pow() ?
jeżeli znasz wartość a^3 to nie jesteś w stanie wyznaczyć (a+1)^3 ?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Pokaż pozostałe 3 komentarze
OMG, spróbuj pomyśleć kilka sekund więcej :D - _13th_Dragon 2019-12-10 19:53
Jak miałbym się czegoś czepiać to raczej podawania rozwiązania na tacy. - kq 2019-12-10 20:04
@kq ++, ale podanie marnego rozwiązania ... jak to zrobił @lion137 ... jest usprawiedliwiające :D - _13th_Dragon 2019-12-10 20:08
No, tak, ale jak już gościu przychodzi na forum, czy jakąs stronę QA, to znaczy, że potrzebuje rozwiązania, a nie dydaktyki. Co do efektywności, dla pierwotnych typów, program jest efektywny. - lion137 2019-12-10 20:20
StackOverflow i inne strony QA (w tym 4programmers) mają zapisy w regulaminie przeciw bezpośrednim pytaniom o rozwiązania zadań szkolnych. Jak chce oszukiwać to niech szuka gdzie indziej. - kq 2019-12-10 20:22

Pozostało 580 znaków

2019-12-10 22:13
0

@lion137: słyszałeś o wzorach zwartych?
1)

unsigned sum_of_cubes(unsigned k) {
    return k*(k + 1)*((k + 2)*(k - 1) + 2)/4;
} 

2) nieco uproszczona wersja, nie wypisuje elementów, tylko zwraca sumę szeregu:

#include <math.h>
double sum_of_series() {
    return M_LN2;
}
edytowany 1x, ostatnio: enedil, 2019-12-10 22:17
Pokaż pozostałe 2 komentarze
Dowodziłeś to indukcyjnie? To błędnie, właściwy wzór to: n^2 * (n + 1)^2 / 4, czyli rzeczywiście można to policzyć w czasie stałym. - lion137 2019-12-10 22:46
@lion137: kiedyś napisałem sobie skrypty do sumowania dowolnych wielomianów w dowolnych zakresach, to mi wyszło. Jeśli Twój wzór działa, to są identyczne. - enedil 2019-12-11 00:34
Istotnie, są identyczne. Nie trzeba było mi zarzucać fałszu. - enedil 2019-12-11 00:36
Ha, ha, tak są, musiałem jakies typo zrobić. - lion137 2019-12-11 01:28

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