80 likes | 266 Views
Algoritmi di conversione in basi numeriche diverse. Lab Programmazione - turno 2 aa 2008/2009. Conversione da base X a base 10. Input : stringa di “cifre” e base numerica (int) Es “12B” (numero) 16 (base) Output: valore intero corrispondente in base 10
E N D
Algoritmi di conversione in basi numeriche diverse Lab Programmazione - turno 2 aa 2008/2009
Conversione da base X a base 10 Input : stringa di “cifre” e base numerica (int) Es “12B” (numero) 16 (base) Output: valore intero corrispondente in base 10 1 · 162 + 2 · 161 + 11 · 160 = 299 (n.b. 11 è il valore corrispondente alla cifra ‘B’) Cosa bisogna usare: i metodi length, charAt,indexOf della classe String AA 2006/07 2 Lab Programmazione L. Capra
Conversione da base X a base 10 algoritmo per convertire un qualunque numero scritto in base x (2 ≤ x ≤ 16) in base decimale Insieme dei simboli base 2: ‘0’,’1’ base 3: ‘0’,’1’,’2’ … base 11: ‘0’,…,’9’,’A’ … base 16: ‘0’,…,’9’,’A’,…,’F’ AA 2006/07 3 Lab Programmazione L. Capra
Conversione da base X a base 10 Bisogna controllare che i simboli presenti nella stringa da convertire siano consistenti rispetto alla base ad es. se la base è 8 solo i simboli ‘0’,..,’7’ potranno comparire nella stringa Bisogna trovare un modo per associare a ogni simbolo il corrispondente valore ad es. il valore di ‘A’ è 10, quello di ‘F’ è 15 AA 2006/07 4 Lab Programmazione L. Capra
Conversione da base X a base 10 Idea: rappresentare l’insieme dei simboli (cifre) con una stringa di caratteri (basi da 2 a 16) String simboli = “0123456789ABCDEF”; valore numerico di una cifra ≡ posizione carattere corrispondente nella stringa simboli usando la funzione indexOf è semplicissimo trovare il valore numerico di un simbolo-cifra Es. indexOf(simboli , ‘A’) 10 AA 2006/07 5 Lab Programmazione L. Capra
Conversione inversa: da base 10 in base X Input : numero intero e nuova base Es: 299 16 Output: stringa di cifre corrispondente al num. in base x Es. (base 16) : “12B“ Algoritmo: 299 16 18 16 1 16 resti 11 (B) 2 1 “12B” AA 2006/07 6 Lab Programmazione L. Capra
Conversione da base 10 a base X Problema: dato il valore del resto (es. 11), come troviamo il simbolo corrispondente (‘B’)? Soluzione usiamo il metodo charAt e nuovamente la stringa simboli Es. charAt(simboli,11) ‘B’ AA 2006/07 7 Lab Programmazione L. Capra
Conversione da base x a base y Input: una stringa di cifre, la vecchia base (int x) e la base in cui vogliamo convertire (int y) Algoritmo (semplicissimo) convertiamo la stringa da base x a base 10 detto z il risultato (int), convertiamo z in base y output: una stringa di cifre AA 2006/07 8 Lab Programmazione L. Capra