#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//Maciej Januszewski, III semestr, PS2
//Wyznacza wartość symbolu Newtona z definicji(iteracyjnie).
//Najpierw trzeba zdefiniować własność silni.
long silnia( int a)
{
long s;
//Z własności wiemy, że 1!=1 oraz 0! = 1
if ( a == 0 || a == 1 )
{
return 1 ;
}
else
{
s = 1 ;
for ( int i = 1 ; i <= a; i++ )
{
s *= i;
}
}
return s;
}
//Mając daną już własność silni, korzystam ze wzoru.
long newton( int n, int k)
{
return silnia( n) / ( silnia( k) * silnia( n- k) ) ;
}
//Wyznacza wartość symbolu Newtona rekurencyjnie ze wzoru.
unsigned long int newton_rek( long int n , long int k)
{
if ( n == k || k == 0 )
{
return 1 ;
}
if ( k > n)
{
return 0 ;
}
else return newton_rek( n- 1 , k- 1 ) + newton_rek( n- 1 , k) ;
}
//Program główny.
int main( )
{
int n = 0 ;
int k = 0 ;
long funkcja1 = 0 ;
long funkcja2 = 0 ;
FILE
* f
= fopen ( "In0101.txt" , "r+" ) ; if ( f == NULL)
{
printf ( "Nie udalo sie otworzyc pliku In0101.txt\n " ) ; return 1 ;
}
fread ( n
, sizeof ( long ) , 1 , f
) ; fread ( k
, sizeof ( long ) , 1 , f
) ;
FILE
* ff
= fopen ( "Out0101.txt" , "w+" ) ;
if ( ff == NULL)
{
printf ( "Nie udalo sie otworzyc pliku Out0101.txt\n " ) ; return 1 ;
}
funkcja1 = newton( n, k) ;
funkcja2 = newton_rek( n, k) ;
fprintf ( ff
, "%d %d\n " , funkcja1
, funkcja2
) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KLy9NYWNpZWogSmFudXN6ZXdza2ksIElJSSBzZW1lc3RyLCBQUzIKIAovL1d5em5hY3phIHdhcnRvxZvEhyBzeW1ib2x1IE5ld3RvbmEgeiBkZWZpbmljamkoaXRlcmFjeWpuaWUpLgovL05hanBpZXJ3IHRyemViYSB6ZGVmaW5pb3dhxIcgd8WCYXNub8WbxIcgc2lsbmkuCmxvbmcgc2lsbmlhKGludCBhKQp7CiAgICBsb25nIHM7CiAgIAogICAgLy9aIHfFgmFzbm/Fm2NpIHdpZW15LCDFvGUgMSE9MSBvcmF6IDAhID0gMQogICAgaWYgKGEgPT0gMCB8fCBhID09IDEpCiAgICAgICAgewogICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgIHMgPSAxOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGE7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIHMgKj0gaTsKICAgICAgICB9CiAgICAgICAgfQogICAgcmV0dXJuIHM7Cn0KIAovL01hasSFYyBkYW7EhSBqdcW8IHfFgmFzbm/Fm8SHIHNpbG5pLCBrb3J6eXN0YW0gemUgd3pvcnUuCmxvbmcgbmV3dG9uKGludCBuLCBpbnQgaykKewogICAgICAgIHJldHVybiBzaWxuaWEobikvKHNpbG5pYShrKSpzaWxuaWEobi1rKSk7Cn0KIAovL1d5em5hY3phIHdhcnRvxZvEhyAgc3ltYm9sdSBOZXd0b25hIHJla3VyZW5jeWpuaWUgemUgd3pvcnUuCnVuc2lnbmVkIGxvbmcgaW50IG5ld3Rvbl9yZWsobG9uZyBpbnQgbiAsbG9uZyBpbnQgaykKewogICAgaWYgKCBuID09IGsgfHwgayA9PSAwICkKICAgIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgCiAgICBpZiAoayA+IG4pCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgIAogICAgZWxzZSByZXR1cm4gbmV3dG9uX3JlayhuLTEsay0xKSArIG5ld3Rvbl9yZWsobi0xLGspOwp9Ci8vUHJvZ3JhbSBnxYLDs3dueS4KaW50IG1haW4oKQp7CiAgICBpbnQgbiA9IDA7CiAgICBpbnQgayA9IDA7CiAgICBsb25nIGZ1bmtjamExID0gMDsKCWxvbmcgZnVua2NqYTIgPSAwOwogCiAgICAgICAgICAgICAgICAgRklMRSAqZiA9IGZvcGVuKCJJbjAxMDEudHh0IiwgInIrIik7ICAgIAogICAgICAgICAgICAgICAgIGlmIChmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIk5pZSB1ZGFsbyBzaWUgb3R3b3J6eWMgcGxpa3UgSW4wMTAxLnR4dFxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZnJlYWQobiwgc2l6ZW9mKGxvbmcpLCAxICwgZik7CgkJCQkJCWZyZWFkKGssIHNpemVvZihsb25nKSwgMSAsIGYpOwoJCQkJCQlmY2xvc2UoZik7CgkJCQkJCQoJCQkJCQlGSUxFICpmZiA9IGZvcGVuKCJPdXQwMTAxLnR4dCIsICJ3KyIpOyAgICAKCQkJCQkJCQoJCQkJCQlpZiAoZmYgPT0gTlVMTCkKCQkJCQkJCSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJOaWUgdWRhbG8gc2llIG90d29yenljIHBsaWt1IE91dDAxMDEudHh0XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKCQkJCQkJCSB9CgoJCQkJCQlmdW5rY2phMSA9IG5ld3RvbihuLGspOwoJCQkJCQlmdW5rY2phMiA9IG5ld3Rvbl9yZWsobixrKTsKCQkJCQkJZnByaW50ZiggZmYsICIlZCAlZFxuIiwgZnVua2NqYTEsIGZ1bmtjamEyICk7CgkJCQkJCWZjbG9zZShmKTsKCQkJCQkJCiAgICByZXR1cm4gMDsKfQ==
compilation info
prog.c: In function ‘silnia’:
prog.c:20: error: ‘for’ loop initial declaration used outside C99 mode
prog.c: In function ‘main’:
prog.c:63: warning: passing argument 1 of ‘fread’ makes pointer from integer without a cast
prog.c:64: warning: passing argument 1 of ‘fread’ makes pointer from integer without a cast
prog.c:77: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long int’
prog.c:77: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long int’
prog.c:63: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result
prog.c:64: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result
stdout