Problem z funkcją do liczenia silni i symblu Newtona

0

Witam, mam takie polecenie do wykonania: Napisać funkcję do liczenia silni. long int silnia (int) Napisać funkcję, która oblicza wartość symbolu Newtona
Wczytać N i K typu całkowitego. Wykorzystać napisaną funkcję do liczenia silni.

Jako, że dopiero zaczynam programowanie oraz funkcje i jeszcze nie wszystko ogarniam mam takie pytanie co tu jest nie tak. Wyskakuje mi błąd że "silnia nie może być użyta jako funkcja". Ktoś mi powie co robie źle?

#include <iostream>

using namespace std;
float long int silnia (int N)
{
int sil=1,i;
for(i=1,i<=N,i++)
{
sil=sil*i
}
return sil;
}

int main()
{
int N,K,newton,silnia;
cout << "Podaj N: ";
cin>>N;
cout << "Podaj K: ";
cin>>K;
newton=(silnia(N))/(silnia(N-K)*silnia(K))
cout<<"symbol Newtona wynosi: "<<newton<<endl;
return 0;
}
0

float long int? Brakuje jeszcze char i double. A tak na serio to tu miało być po prostu int.

W pętli for oddziela się poszczególne części średnikami, nie przecinkami. Poza tym to nie jest C89 (o ile dobrze pamiętam) że trzeba deklarować zmienne na samym początku pliku więc możesz zrobić:

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

Brakuje Ci średnika tutaj:

sil=sil*i

Tutaj:

int main()
{
	int N, K, newton, silnia;
	cout << "Podaj N: ";
	cin >> N;
	cout << "Podaj K: ";
	cin >> K;
	newton = (silnia(N)) / (silnia(N - K) * silnia(K))
	...
}

silnia jest zmienną, nie funkcją i dlatego to nie działa. Wywal to silnia z pierwszej linijki w main.

0

Dzięki wielkie teraz działa :)

0

A jeszcze takie pytanie, czy mogę napisać drugą funkcje która mi liczy ten symbol Newtona? W sensie zamiast w main to w funkcji. I czy tam mogę wykorzystać tą funkcję którą napisałem do liczenia funkcji?

0

Oczywiście że tak.
IMHO powinno to wyglądać tak że funkcja która liczyłaby symbol Newtona powinna przyjmować 2 argumenty (N oraz K) tak abyś nie używał zmiennych globalnych.

0

Nie mogę sobie poradzić jak ta druga funkcja powinna wyglądać. Ciągle wyskakuje jakiś błąd.

    int S_N(int N, int K)
{
    int newton
    {
    newton=(silnia(N))/(silnia(N-K)*silnia(K));
    }
    return newton;
}
0

Dobra nie ważne już wiem czego brakowało. Tylko czy to jest ogólnie poprawne?

0

Wrzuć cały kod to zobaczę, bo to co wrzuciłeś przed chwilą poprawne nie było.

0
#include <iostream>

using namespace std;


long int silnia (int N)
{
    int sil=1,i;
    for(i=1;i<=N;i++)
    {
        sil=sil*i;
    }
    return sil;
}
    int S_N(int N, int K)
{
    int newton;
    {
    newton=(silnia(N))/(silnia(N-K)*silnia(K));
    }
    return newton;
}
int main()
{

    cout<<"Zadanie 4.2"<<endl;

    return 0;
}
0

Po co te klamerki po int newton;?

0

W tej funkcji nawet zmiennej nie potrzebujesz, wystarczy:

int S_N(int N, int K)
{
    return (silnia(N))/(silnia(N-K)*silnia(K));
}
0

Dzięki wszystkim za pomoc :) powoli zaczynam już się chyba z tym oswajać i nie wydaje się takie złe jak na początku.

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