Sera a tutti. Stavo cercando di fare un programmino che calcola i coefficienti binomiali, ho messo a punto un sistema per calcolare prima in numeratore del risultato e poi il denominatore, il risultato finale è il quoziente fra i 2. Il problema è che non funziona, anche se a me sembra giusto...ecco il codice:
#include<stdio.h>
int main()
{
int n,k,i,j,r1,r2;
double r;
printf("Calcolatore di coefficienti binomiali. Inserisci il coefficiente n: \n");
scanf("%d", &n);
scanf("%d", &k);
r1=n;
r2=k;
i=k-1;
j=k;
if (k=1) { // Caso in cui k=1
printf("Il risultato e' %d", &n);
}
else if (k==0 || k==n) { // Caso in cui k=0 oppure k=n
printf("Il risultato e' 1");
}
else { // Caso generale
for (i=k-1; i>0; i--) { // Numeratore
r1=r1*(n-1);
n--;
}
for (j=k; j>0; j--) { // Denominatore
r2=r2*(k-1);
k--;
}
r=r1/r2; // Risultato finale
}
int P;
scanf("%d", &P);
return 0;
}
Il fatto strano è che nel secondo caso (n=0 o n=k) funziona, mi stampa a video il risultato che è 1, mentre nel primo caso (k=1) invece di stamparmi il valore di n come risultato, mi stampa 2686756 (per ogni n). Infine, nel caso generale, il programma crasha. Avete qualche spiegazione??