Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in...
-
Upload
firmino-perrone -
Category
Documents
-
view
219 -
download
3
Transcript of Esercizio n° 008 Conversione da base 10 a base X (Utilizzo della pila) Corso di Programmazione in...
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”
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
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
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!!!
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
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);
}…
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);
};