Esame di Laboratorio di Calcolo
AA 2005/2006
12/1/2007

Prova pratica

scrivere un programma che letti due numeri interi positivi n e k calcoli il valore del coefficiente binomiale (n k) =  n!/(k!*(n-k)!) mediante la chiamata ad una funzione il cui prototipo e'

int bincoeff (int n, int k);

(ovviamente per il calcolo potreste avere bisogno di implementare anche altre funzioni).

Verificate i risultati per i seguenti valori di n e k rispettivamente:
  1. n=4, k=1
  2. n=4, k=2
  3. n=4, k=3
  4. n=4, k=4
  5. n=11, k=10
  6. n=12, k=11
  7. n=13, k=12
sapete spiegare perche' nell'ultimo caso non si ottiene il risultato atteso?
aiutatevi aggiungendo la stampa di alcuni risultati parziali.

Per ovviare in parte al problema riscontrato per n=13 scrivete un'altra funzione

int bincoeff_bis (int n, int k);


che utilizza un procedimento alternativo per il calcolo del oefficiente binomiale:
definite una variabile temporanea ris, che parte da 1, e un contatore i, che parte da 0 e arriva k. Per ogni 0<=i<k, si ridefinisca ris come ris*(n-i)/(i+1) e si
incrementi i di 1. Quando i arriva a k, dentro ris si trova il valore del coefficiente binomiale (n k).

Verificate che per valori di n inferiori a 13 la nuova funziona fornisca risultati confrontabili con la precedente e trovate per quali valore di n si hanno problemi anche con la nuova funzione.

Si ricorda che ai fini della valutazione della prova questa viene considerata insufficiente se il codice non compila.