Resetowanie wartosci w funkcji

0

Witam,
Piszę program, kóry wylicza ilość podzbiorów k-elementowych ze zbioru n-elementów wykorzystując Symbol Newtona. Program ma użyć dwóch funkcji: na obliczenie silni i obliczenie wyniku. Problem polega na tym, iż nie wiem, jak "zresetować" zmienną Silnia po tym jak obliczy ona n!. Przykład: n=6, k = 4. Outpust: n! = 720 (OK), k! = 17280 (PLS HELP).

#include <iostream>

int n;
int k;
int Silnia = 1;


int ObliczSilnie(int LiczbaElementow);

int main()
{
	std::cout << "Podaj n: ";
	std::cin >> n;
	std::cout << "n! = " << ObliczSilnie(n) << std::endl;

	std::cout << "Podaj k: ";
	std::cin >> k;
	std::cout << "k! = " << ObliczSilnie(k) << std::endl;

	return 0;
}

int ObliczSilnie(int LiczbaElementow)
{
	for (int i = 1; i <= LiczbaElementow; i++)
	{
		Silnia *= i;
	}
	return Silnia;
}
 
3

Nie używaj zmiennych globalnych i twój problem zniknie

1

Wystarczy w funkcji przypisać zmiennej Silnia wartość 1

int ObliczSilnie(int LiczbaElementow)
{
	Silnia = 1;
    for (int i = 1; i <= LiczbaElementow; i++)
    {
        Silnia *= i;
    }
    return Silnia;
}
0

Działa, aż czuję się zażenowany faktem, jak długo się z tym męczyłem. Dzięki za pomoc, temat do zamknięcia.

#include <iostream>

int ObliczSilnie(int LiczbaElementow);

int main()
{
	int n;
	int k;

	std::cout << "Podaj n: ";
	std::cin >> n;
	std::cout << "n! = " << ObliczSilnie(n) << std::endl;

	std::cout << "Podaj k: ";
	std::cin >> k;
	std::cout << "k! = " << ObliczSilnie(k) << std::endl;

	return 0;
}

int ObliczSilnie(int LiczbaElementow)
{
	int Silnia = 1;
	for (int i = 1; i <= LiczbaElementow; i++)
	{
		Silnia *= i;
	}
	return Silnia;
}
 

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