|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Feb 2011
Messaggi: 4
|
[Scheme] Conversione binario-decimale (solo parte decimale)
Salve!
Mi sto spaccando la testa pensando a come risolvere questo problema posto dal professore nell'esame di programmazione dell'anno scorso (io ce l'ho il 21 gennaio e il fatto di non riuscire a risolvere questo mi mette una certa ansia!). Vi posto il testo: Un numero x compreso nell’intervallo [0, 1[ (cioè tale che 0 ≤ x < 1) può essere codificato, eventualmente in forma approssimata, tramite una sequenza finita di cifre binarie, precisamente quelle che comparirebbero a destra del punto che separa la parte intera dalla parte frazionaria nella rappresentazione in base 2. Definisci una procedura fract-part che, data una stringa f di 0/1, restituisce il valore numerico x di f interpretata come parte frazionaria in base 2. Esempi: (fract-part "0") → 0 (fract-part "01") → 0.25 (fract-part "101") → 0.625 (fract-part "1") → 0.5 (fract-part "11") → 0.75 (fract-part "0101") → 0.3125 Voi come fareste? Avete qualche suggerimento? Opzionale: ho provato a risolverlo in modo ricorsivo usando le liste (anche se l'input è una stringa, dovrei attuare la conversione da stringa a lista, ma quello lo implementerò dopo, ora mi interessa più che altro trovare il procedimento), però il risultato viene giusto solo se l'input è 0 o 1, altrimenti gli altri sono tutti sbagliati. Avete idea di dove potrei aver sbagliato? Vi posto il codice: (define fract-part (lambda (bin) (let ((n (length bin))) (if (= n 0) 0 (+ (* (car bin) (/ 1 expt 2 (+ n 1))) (fract-part (cdr bin))))))) Grazie mille per l'attenzione! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:53.