Ciao a tutti!
Ho la necessità di realizzare un programmino che mi calcoli il coefficiente binomiale di due numeri ( http://it.wikipedia.org/wiki/Coefficiente_binomiale ).
Il mio problema è che tipo di dato usare, visto che il fattoriale di un numero abbastanza basso, come per esempio 15 vale troppo!
15! = 1 307 674 368 000
Un intero non basta, un long int nemmeno...avete idee?
Intanto vi posto il codice se volete provare!
codice:/***************************/ /*Inclusione delle librerie*/ /***************************/ #include <stdio.h> #include <stdlib.h> /******************************/ /*Dichiarazione delle funzioni*/ /******************************/ long int fattoriale(long int num); int calcola_coeff_bin(int nodi_sottografo, int nodi); /*********************************/ /*Definizione della funzione main*/ /*********************************/ int main() { int n,k,ris; printf("Inserisci N...\n"); scanf("%d", &n); printf("Inserisci K...\n"); scanf("%d", &k); calcola_coeff_bin(k,n); } /***************************************/ /*Definizione della funzione fattoriale*/ /***************************************/ /*funzione che calcola il fattoriale di un numero*/ long int fattoriale(long int num) { int fatt; if(num == 0) fatt = 1; else fatt = num * fattoriale (num - 1); return (fatt); } /**********************************************/ /*Definizione della funzione calcola_coeff_bin*/ /**********************************************/ /*funzione che calcola il coefficiente binomiale*/ int calcola_coeff_bin(int k, int n) { int coefficiente, tmp1, tmp2, tmp3; tmp1 = fattoriale(n); printf("Fattoriale n: %d\n", tmp1); tmp2 = fattoriale(k); printf("Fattoriale k: %d\n", tmp2); tmp3 = fattoriale(n - k); printf("Fattoriale (n - k): %d\n", tmp3); coefficiente = tmp1/(tmp2 * tmp3); printf("Coefficiente binomiale: %d\n", coefficiente); return(coefficiente); }

Rispondi quotando