Cześć, napisałem program, który wypisuje kolejne poziomy trójkąta Pascala, ale od 14 poziomu zaczynają się dziać dziwne rzeczy, a od 16 pojawiają się liczby ujemne. Pomyślałem, że jest to wina wielkości zmiennych, więc zmieniłem inta na long inta, ale to nie pomogło i nie potrafię znaleźć błędu. :/
#include <iostream>
#include <math.h>
using namespace std;
long int silnia(long int x)
{
long int a = 1;
while (x)
{
a *= x--;
}
return a;
}
long int potega(long int x, long int y)
{
return pow(x, y);
}
int main()
{
int a = 1, b = 1;
int poziom, bufor, i = 0;
long int k = 0, n = 1;
long int w;
cout << "Podaj liczbe poziomow: "; cin >> poziom; cout << endl;
while(n<poziom)
{
while (k <= n)
{
w = (silnia(n) / (silnia(k)*silnia(n - k)))*potega(a, n - k)*potega(b, k);
cout << w << " ";
k++;
}
cout << endl;
k = 0;
n++;
}
return 0;
}