Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in...

7
Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in Java – Esercizio n° 008 stituto Statale di Istruzione Superiore “F. Enriques”

Transcript of Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in...

Page 1: Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in Java – Esercizio n° 008 Istituto Statale di Istruzione.

Esercizio n° 008

Conversione da base 10 a base X

(Utilizzo della pila)

Corso di Programmazione in Java – Esercizio n° 008

Istituto Statale di Istruzione Superiore “F. Enriques”

Page 2: Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in Java – Esercizio n° 008 Istituto Statale di Istruzione.

Scrivere un programma che richiede un numero intero in base dieci ed una nuova base da 2 a 9 e che in seguito effettua la conversione del numero da notazione decimale ad una notazione espressa nella base specificata.

La conversione si effettua con ripetute divisioni per la base in cui si sta convertendo il numero prendendo i resti delle divisioni in ordine inverso.Quindi i dati di input del nostro problema sono 2: il numero da convertire e la base di destinazione.

IDEA: Utilizzare una pila dove memorizzare i resti.Per ottenere i dati nell’ordine corretto, basterà semplicemente svuotare la pila.

Ricordatevi che dentro i vector, stack, queue, ecc.. non ci possono stare i tipi fondamentali, ma solamente le rispettive classi involucro.

Istituto Statale di Istruzione Superiore “F. Enriques”

Corso di Programmazione in Java – Esercizio n° 008

Page 3: Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in Java – Esercizio n° 008 Istituto Statale di Istruzione.

Corso di Programmazione in Java – Esercizio n° 008

Istituto Statale di Istruzione Superiore “F. Enriques”

Come si effettua la conversione da base 10 a base X?Facciamo subito un esempio che vale più di 1000 parole…Voglio convertire il numero 135 da base decimale (base 10) a base binaria (base 2)Useremo la seguente convensione: 135

62

2

1= 135 diviso 2 uguale a 62 resto 1

135

67

2

1

33

2

1

16

2

1

8

2

0

4

2

0

2

2

0

1

2

0

135 convertito in base 2 è uguale a: 10000111

0

2

1

Page 4: Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in Java – Esercizio n° 008 Istituto Statale di Istruzione.

Corso di Programmazione in Java – Esercizio n° 008

Istituto Statale di Istruzione Superiore “F. Enriques”

Molto probabilmente avrete già capito come funziona il meccanismo…si prende il numero iniziale e si effettuano divisioni successive conservandoogni volta il resto che si ottiene…

Una volta che il quoziente ottenuto è uguale a zero, il numero convertito siottiene concatenando i resti prendendoli nel senso opposto in cui si sono ottenuti.

Non a caso per questo esercizio vi si richiede di utilizzare come struttura datidi supporto una Pila!!

Suggerimento: Utilizzate “import java.util.Stack” che contiene giàimplementata una Pila basate su un vettore per cuiinfischiandovene di come è implementata, potete direttamenteistanziarla ed utilizzarne i metodi relativi, ovvero pop, push..ecc.

Es.:import java.util.Stack…Stack MiaPila= new Stack( );…MiaPila.push(…qualcosa…); \\ Per inserire qualcosa in cima alla pilaMiaPila.pop(…qualcosa…); \\ Per togliere qualcosa dalla cime della pila

RICORDATEVI CHE DOVETE USARE LE CLASSI INVOLUCRO!!!

Page 5: Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in Java – Esercizio n° 008 Istituto Statale di Istruzione.

Innanzitutto facciamo un metodo che effettua la conversione utilizzando una pila.

public static String decToBasex(int n, int x)

{

String b= "";

Stack S= new Stack();

do

{

S.push(new Integer (n % x));

n = n / x;

} while(n!=0);

do

{

b= b + ((Integer) S.pop()).toString();

} while(!S.isEmpty());

return b;

}Istituto Statale di Istruzione Superiore “F. Enriques”

Corso di Programmazione in Java – Esercizio n° 008

Page 6: Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in Java – Esercizio n° 008 Istituto Statale di Istruzione.

Corso di Programmazione in Java – Esercizio n° 008

Istituto Statale di Istruzione Superiore “F. Enriques”

public static void main(String[] args) {

int numero=0, nuovabase=0;

DataInputStream stream = new DataInputStream(System.in);

String stringa,risultato;

System.out.println("Inserisci il numero intero in base 10 da convertire...");

try

{

stringa= stream.readLine();

numero=Integer.valueOf(stringa);

}

catch(Exception e)

{

System.out.println("Errore durante lettura del numero da convertire");

System.exit(0);

}…

Page 7: Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in Java – Esercizio n° 008 Istituto Statale di Istruzione.

Corso di Programmazione in Java – Esercizio n° 008

Istituto Statale di Istruzione Superiore “F. Enriques”

System.out.println("Inserisci la nuova base...");

try

{

stringa= stream.readLine();

nuovabase=Integer.valueOf(stringa);

}

catch(Exception e)

{

System.out.println("Errore durante lettura del numero da convertire");

System.exit(0);

}

risultato = DecToBasex(numero,nuovabase);

System.out.println("Il numero "+numero+ " in base "+nuovabase+“

è uguale a: "+risultato);

};