C++ Zadanko z silnią

0

Witam.
Mam na jutro napisac taki program:

Napisać funkcję, która oblicza wartość n! (n silnia), a następnie zastosować ją do obliczenia wartości współczynników dwumianu stopnia od 1 do n
(wyświetlać te współczynniki na ekranie w postaci tzw. "trójkąta Pascala")

Jak 1 częśc zadania jest dośc logiczna (silnia) tak, druga kompletnie mi nie podchodzi. Dwumian to jest suma dwóch niewiadomych. No to to oblicza wartość. Czyli zlicza 2 liczby z tego co widze. Liczby podnoszone do potęgi n. No i jeszcze ma się to wyświetlić jako "trójkąt Pascala"...
Jakieś rady?

Zrobiłem jak na razie coś takiego:

int silnia(long int n)
{
	long int p=1;
	if(p<0)
	{
		cout << "Podaj nieujemna wartosc!";
		return 0;
	}

	for(int i=n ; i>1; i--)
	p=p*i;

	return p;
}


int _tmain(int argc, _TCHAR* argv[])
{
	long int n;

	cout << "Podaj liczbe :";
	cin >> n;
	silnia(n);
	cout << silnia(n);
	cout << endl;

	system ("pause");
	return 0;
}

Fakt, niewiele. Zaledwie funkcje, która liczy średnią. Jednakże nie mam pomysłu jak dalej to ciągnąć.

0

unsigned long silnia(unsigned short n) // i nie musisz martwić się ujemnymi wartościami.
masz policzyć współczynniki dla (x+1)n - tu potęga
iloczyn=C[n]*pow(x,n)+...+C[0]*pow(x,0);
musisz wyliczyć te C[0..n];
0: 1
1: 1 1
2: 1 2 1
3: 1 3 3 1
itp.

0

Tak czy siak nadal nie wiem jak to fizycznie wykonać.
Ok. Współczynniki dla (x+1)^n.
Ale iloczyn z czego? W jaki sposób ma mi się do tego przydać ta silnia cała?

0

współczynik = n!/(k!*(n-k)!)

0

A jak określić ile będzie wierszy?

0

Liczba wierszy to zawsze n+1, tak samo jak kolumn dla ostatniego wiersza.

Wystarczą ci dwie pętle for od 0:

	int s=5; //twoj stopien
	for(int i=0;i<=s;i++) {
		for(int j=0; j<=i;j++) {
			       cout << silnia(i)/(silnia(i-j)*silnia(j)) << " ";	
			}
		cout << endl;
	}

Funkcję silnia najlepiej zrobić na unsigned long long, wtedy da radę do co najmniej 20 stopnia.

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