lunes, 27 de junio de 2011

Deitel_Java_6.26 (Invertir los Dígitos de un Número en Java)

6.26  Escriba un método que tome un valor entero y devuelva el número con sus dígitos invertidos. Por ejemplo, para el número 7631, el método debe regresar 1367. Incorpore el método en una aplicación que reciba como entrada un valor del usuario y muestre el resultado.

Este código también aparece resuelto en C++: Deitel_C++_3.31
Este código debe guardarse con el nombre UsaDeitel_6_26.java

 import java.util.Scanner;

 public class UsaDeitel_6_26

 {      // Abre clase UsaDeitel_6_26
 
 public static void main(String args[])
 {           // Abre main

 Scanner entrada = new Scanner(System.in);
 int numero;
 Deitel_6_26 miObjeto = new Deitel_6_26();


 System.out.println("\nEste programa recibe un entero y lo presenta con los ");
 System.out.println("digitos invertidos. ");
 System.out.println("\nPor favor introduzca un numero: ");
 numero = entrada.nextInt();

 System.out.println("\nEste es el numero invertido:\n ");
 miObjeto.Invierte( numero );

 
 }           // Cierra main 
 }      // Cierra clase UsaDeitel_6_26

El siguiente código debe guardarse con el nombre Deitel_6_26.java

 public class Deitel_6_26

 {        // Abre clase Deitel_6_26

 public int Cuenta( int x )

 {         // Abre metodo Cuenta 
 //Lo primero que se hace es averiguar cuantos digitos tiene 
 //el numero. Para esto se hace lo siguiente:
 //se divide el numero sucesivamente entre 1, 10, 100,....
 //mientras el resultado sea distinto de cero.
 //Al mismo tiempo se incrementa una variable contador
 //que cuenta el numero de digitos.
 //Cuando finalmente se alcanza un cero quiere decir que 
 //se ha dividido entre un multiplo de 10 mayor al numero
 //y por lo tanto se deja de contar. Sin embargo, se ha contado
 //de mas una vez, por lo cual se resta una unidad.
 //El siguiente segmento realiza esta tarea.
  
 int divisor = 1;
 int contador = 0; 
 int digito = 1;

 while ( 0 != digito )
 {      // Abre while
  
 digito = x / divisor;
 divisor *= 10;
 contador++;

 }      // Cierra while 

 return --contador;

 }         // Cierra metodo Cuenta


 //////////////////////////////////////////////////////////
 //METODO INVIERTE
 /////////////////////////////////////////////////////////

 public void Invierte (int y ) 

 {         // Abre metodo Invierte

 // Par dar una idea de la forma en que se obtienen los
 // digitos, es bueno poner el siguiente ejemplo
 //
 // sea y = 37401
 //
 // Digito1 = 37401 % 10
 // Digito2 = ((37401)/10) % 10 
 // Digito3 = (((37401)/10)/10) % 10
 // Digito4 = ((((37401)/10)/10)/10) %10
 // Digito5 = ((((37401)/10/)10)/10)/10
 
 int digitos = Cuenta(y);

 for (int i = 1; i < digitos; i++)
 {       // Abre for
 System.out.printf("\t%d", y % 10);     
 y /= 10;
          
 }       // Cierra for 

 System.out.printf("\t%3d", y);
 System.out.println("\n");

 }         // Cierra metodo Invierte
 }        // Cierra clase Deitel_6_26

2 comentarios:

  1. Más simple:
    http://pastebin.com/UpBzbexp

    ResponderEliminar
  2. Ya revisé el programa. Es cierto, se puede mejorar. Muchas gracias por esa versión. Saludos!

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...