Programa para mostrar pasos pasando a una base numérica (no hexadecimal, por ejemplo) desde decimal

Ver el tema anterior Ver el tema siguiente Ir abajo

Programa para mostrar pasos pasando a una base numérica (no hexadecimal, por ejemplo) desde decimal

Mensaje por VictorH el Sáb Oct 10, 2015 8:54 pm

Código:

//Esto tiene un par de fallos en la parte matemática. La mecánica es de todas formas básicamente igual


//Paquete necesario para introducir comandos desde consola
import java.util.Scanner;


//Construimos la clase
public class Pasos {
    
//Método para invertir una cadena de texto
    public static String invierte(String ainvertir){
        
        //Declaramos una variable contador, una que almacen la longitud de la cadena de texto y una receptora
        //de la inversión de la cadena
        int i;
        int longitud = ainvertir.length();
        StringBuilder invertida = new StringBuilder(longitud);

        //Este bucle procesará el invertido de la cadena
        for (i = (longitud - 1); i >= 0; i--){
            invertida.append(ainvertir.charAt(i));
        }

        //Se devuelve la cadena invertida
        return invertida.toString();

        
    }
    
    //El método que se encarga de todo el proceso
    public static void pasos(){
        
        //Declaramos una variable que permitirá que el programa permita hacer varias conversiones seguidas
        boolean encendido = true;
        //Instancia de una clase para meter datos desde consola
        Scanner user_input = new Scanner ( System.in );
        //El número y la base a convertirlo
        int numero, base;
        //Almacenamos el resultado final en una string debido a su facil manejo
        String resultado= new String();
        
        
        //El bucle que permitirá hacer tantas conversiones como queramos
        while (encendido == true){
            
            //Ponemos la string vacía cada vez que se repite el bucle para evitar que se sumen datos desde la anterior conversión
            resultado="";
            

            //Pedimos al usuario que introduzca los datos
            System.out.println( "Introduce número:");
            numero=Integer.parseInt(user_input.next());
            
            System.out.println( "Introduce base a convertir:");
            base=Integer.parseInt(user_input.next());
            
            //Bucle que hará las operaciones hasta que llegamos a una división inferior a 1 ya que eso implica que ha llegado
            //al final de operación. También gestiona la expresión en texto de los resultados
            while(numero>1){
                                
                System.out.println(numero+"/"+base+"="+Math.round(numero/base)+"    , resto "+numero%base);
                resultado=resultado+(numero%base);
                
                numero=Math.round(numero/base);
            
            }
            
            //Este condicional evita que si el resto es exacto le añada un 0 al final de la cadena
            if (numero!=0){
                
                resultado=resultado+numero;
                                            
            }
            
            //Debido a la forma en que se procesa la operación el número resultante estará invertido y esto lo corrige
            resultado=invierte(resultado);          
            
            //Mostramos en pantalla el resultado
            System.out.println(resultado);
            
        }
        
        
    }
    
    public static void main(String[] args) {
    
    //Llamamos al método que hará toda la conversión
    pasos();
        
    }
    
}

avatar
VictorH
Admin

Posts : 45
Join date : 01/10/2015

Ver perfil de usuario http://daw15.boardlog.com

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.