[jezyk c] problem z funkcja obliczającą sumę n liczb


(Jaco Q) #1

Zrobiłem program obliczający sumę n liczb naturalnych

#include 

#include 

#include 


int main()

{

int suma(int nliczba);

int nliczba;

int i=0;

float nsuma;

{


printf ("Program oblicza sume od 1 do podanej liczby.\n");

printf("Podaj ja: ");

scanf("%d", &nliczba);

int nsuma=0;

for (int i=1; i<=nliczba;i++)

nsuma=nsuma+i;

printf("Suma liczb od 1 do n wynosi suma(nliczba)");


return nsuma;

}

getch();


}

I nie oblicza mi tej sumy :frowning:

A chce zeby spełniała takie wymagania:


(Matheosh) #2

Te kilka wklepanych przez Ciebie literek poza pobraniem liczby nic nie robi.

tak wygląda przykładowa funkcja dla Twojego programu, brakuje w niej jednej poprawki (wklepaniu jednego małego znaczku :slight_smile: ), ale to pozostawiam już Tobie.

int suma(int liczba)

{

    int i;

    int wynik;

    wynik=0;


    for(i=0;i
    {

                         wynik+=i;

                         }

    return wynik;

    }

pozostaje Ci tylko w programie głównym ją wywołać. Szczerze powiedziawszy zabierasz się do czegoś o czym nie masz zielonego pojęcia, poczytaj kilka kursów, bo bez tego nic nie zrobisz.


(Fiołek) #3

No ale jak ma obliczać jeśli nie ma nigdzie definicji tej funkcji(i jej nigdzie nie wywołujesz)? Tu jest jeszcze kilka błędów "logicznych".

Radzę poczytać jakiś kurs bo to podstawowe rzeczy są(funkcje). Długo Ci to nie zajmie a da efekty.


(Sawyer47) #4

Raz to nie ma w C zagnieżdżania funkcji (tzn. w C++ nie ma, więc w C pewnie tez nie :))

Dwa po co plik nagłówkowy string? Po co float jako suma liczb naturalnych? Poza tym to zadanie domowe?

Opakuj to w kod C, żeby działało:

unsigned long sumaN(unsigned long n) {

    return ((1 + n) * n) / 2;

}

To co pokazałeś, się do niczego nie nadaje, bo to nie jest poprawny kod w C.


(Somekindsoftware) #5

No, a jak się licznik w int przewinie? :wink:

To jest źle, będzie zbyt wydajnie, lepiej liczba po liczbie dodawać. :wink: