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:
- n=4, k=1
- n=4, k=2
- n=4, k=3
- n=4, k=4
- n=11, k=10
- n=12, k=11
- 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.