sábado, 16 de julio de 2011

Convertir de Decimal a Octal en Java

Este programa recibe un número decimal y lo convierte a notación Octal.
Este código debe guardarse con el nombre UsaconvertirOctal.java




 import java.util.Scanner;

 public class UsaConvertirOctal

 {   // Abre clase UsaConvertirOctal

 public static void main( String args[])

 {    // Abre main

 System.out.print("\nEste programa convierte decimal a ");

 System.out.print("octal. \n");

 Scanner entrada = new Scanner(System.in);

 ConvertirOctal miObjeto = new ConvertirOctal();

 int numero;

 

 System.out.print("\nPor favor introduzca un numero ");

 System.out.println("y se imprimira su equivalente en octal: ");

 numero = entrada.nextInt();

 miObjeto.Octal( numero );



 }    // Cierra main

 }   // Cierra clase UsaConvertir



Este código debe guardarse con el nombre ConvertirOctal.java




 public class ConvertirOctal

 {    // Abre clase ConvertirOctal

 // La variable Tamano controla el numero de 

 // simbolos que se requieren para hacer la conversion

 // Para llevar un registro de los simbolos se usa un

 // arreglo. Estos se deben guardar porque se van generando

 // de derecha a izquierda, pero la impresion es de 

 // izquierda a derecha.

 private int Tamano = 35;

 private int[] a = new int[Tamano];

 /////////////////////////////////////

 // METDODO OCTAL

 /////////////////////////////////////

 

 public void Octal( int x )

 {     // Abre metodo Octal

 System.out.println("\nAqui esta el numero en notacion octal: ");

 // Las entradas del arreglo se llenan con 0

 for ( int i = 0; i < Tamano; i++ )

 {  // Abre for

 a[i] = 0;

 }  // Cierra for



 int j = 0;

 while ( 0 != x )

 {   // Abre while

 

 if ( 0 != x % 8 )

 {   // Abre if

 a[j++] = x % 8; 

  

 // Se resta el residuo

 x -= x % 8;

 // Se divide entre 8

 x /= 8;

 }   // Cierra if

 else 

 {     // Abre else

 a[j++] = 0; 

 // Se cambia x

 x /= 8;

 }     // Cierra else

 }   // Cierra while

 // El numero en octal, que se ha guardado

 // al reves en el arreglo a, se manda a 

 // imprimir

 Imprimir();

 }     // Cierra metodo Octal 







 ///////////////////////////////////

 //METODO IMPRIMIR

 ///////////////////////////////////

 public void Imprimir(  )

 {      // Abre metodo Imprimir

 // El arreglo se imprime de la ultima posicion

 // a la primera. Sin embargo, es muy probable 

 // que las ultimas sean 0. Como estan a la derecha

 // no es necesario imprimirlos. La variable estatus

 // inicia con "afuera", lo cual indica que los ceros 

 // no deben imprimirse

 String estatus = "afuera";

 

 for ( int i = Tamano - 1; i >= 0; i-- )

 switch ( a[i] )

 {       // Abre switch

 case 0:

 if ( "adentro" == estatus )

 System.out.printf("0");

 break;

 case 1:

 System.out.printf("1");

 estatus = "adentro";

 break;

 case 2:

 System.out.printf("2");

 estatus = "adentro";

 break;

 case 3:

 System.out.printf("3");

 estatus = "adentro";

 break;

 case 4:

 System.out.printf("4");

 estatus = "adentro";

 break;

 case 5:

 System.out.printf("5");

 estatus = "adentro";

 break;

 case 6:

 System.out.printf("6");

 estatus = "adentro";

 break;

 case 7:

 System.out.printf("7");

 estatus = "adentro";

 break;

 default:

 System.out.printf("ERROR. EL PROGRAMA ESTA MAL");

 break;

 }       // Cierra switch

 // Es probable que se haya introducido el numero 0

 // y en este caso la variable estatus permanecio

 // como "afuera" y no se imprimio el 0.

 if ( "afuera" == estatus )

 System.out.printf("0");



 System.out.println("\n");

 }      // Cierra metodo Imprimir  

 }    // Cierra clase ConvertirOctal

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...