Witam.
Mam problem z tym programem. Po wpisaniu zmiennych spełniających warunek program zawiesza się. Proszę o rzucenie okiem i porady ;) Oto kod:
#include <iostream>
using namespace std;
int n,k,a,b,c,x,y,z,i;
int main()
{
cout<<"\t\tProgram do obliczania wartosci symbolu Newtona.Warunek: o<k<n \n\n";
cout<<"\t\t\n\nPodaj wartosc zmiennej n : ";
cin>>n;
while(n<0)
{
cout<<"\t\tZmienna n nie moze byc mniejsza od zera, podaj inna liczbe!";
cin>>n;
}
cout<<"\t\t\n\nPodaj wartosc zmiennej k : ";
cin>>k;
while(k<0)
{
cout<<"\t\t\n\nZmienna k nie moze byc mniejsza od zera, podaj inna liczbe!";
cin>>k;
}
while(n<k ||n<0||k<0)
{
cout<<"\t\t\n\nPodales zmienne ktore sa niezgodne z warunkiem podanym na poczatku. Wprowadz inne zmienne !";
cout<<"\t\tPodaj n:";
cin>>n;
cout<<"\t\tPodaj k:";
cin>>k;
}
if(k==0)
{
cout<<"\t\tWartosc n nad k wynosi 1 !";
}
if(k==n)
{
cout<<"\t\tWartosc n nad k wynosi 1 !";
}
else
{
if(n == 0)
{
a=1;
b = k;
for( i = k; k != 1; k = i-1)
{
y=y*(k-1);
k=k-1;
}
b=y;
c = n-k;
for( i = c; c != 1; i = i-1)
{
z=z*(c-1);
c = c-1;
}
c=z;
cout<<"Przy podanych wspolczynnikach dwumian Newtona przyjmuje wartosc rowna: "<<(a)/(b*c);
}
else
{
a = n;
for( i = n; n != 1; i = i-1)
{
x=x*(n-1);
n=n-1;
}
a=x;
b = k;
for( i = k; k != 1; k = i-1)
{
y=y*(k-1);
k=k-1;
}
b=y;
c = n-k;
for( i = n-k; n-k != 1; i = i-1)
{
z=z*(n-k-1);
c = c-1;
}
c=z;
cout<<"Przy podanych wspolczynnikach dwumian Newtona przyjmuje wartosc rowna: "<<(a)/(b*c);
}
}
return 0;
}