Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Charlicines

#1
Hola Xh4xor23, veras he intentado hacer ese ejercicio con una compañera de tu clase asi que mas o menos se lo que habeis dado en clase, asi que hice el programa de esta manera muy sencilla sin usar clases ni arrays y algunas mas cosas que seguro no habeis dado en clase asi que para que lo entiendas un poco aqui tienes. Tengo que decir que estoy dando programacion en el primer curso de una formacion profesional de grado superior por lo que mis conocimientos no son muy avanzados aun y parte de este codigo lo logre tomando como ejemplos algunas ideas que han aportado otras personas en este post con sus codigos, si veis algun fallo o algo que no os guste decidme :D

Código (java) [Seleccionar]
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package practica;

import java.util.Scanner;

/**
*
* @author Charlie
*/
public class Practica {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
        Scanner sc = new Scanner(System.in);
       
        short num; //inicializamos la variable del numero que queremos pedir al usuario
               
        System.out.println("Introduca un numero entero positivo."); // un print donde avisemos al usuario que debe introducir el numero a continuacion
        num = sc.nextShort(); // pedimos por teclado un numero y lo guardamos en la variable "num"
       
        //Calculamos el factorial de num
       
       
        int fact = 1;
        for(int i = 2 ; i <= num ; i++){
            fact *= i;
        }
        System.out.println(fact); //no te lo pide el enunciado pero yo imprimo el resultado del factorial por comodidad y hacer mis comprobaciones
       
       
        String cadena = String.valueOf(fact); // pasamos a string el numero factorial para poder recorrerlo mas adelante en le "for"
       
       
        String parejaS = ""; // creamos esta variable string para guardar las parejas de digitos que vamos cogiendo del numero factorial
        int pareja; // lo mismo pero de tipo entero para mas adelante poder hacer la conversion a acsii, ya que solo funciona con numeros enteros no con string
       
        for (int i = 0; i < cadena.length(); i++) { //iniciamos el for
            parejaS += cadena.charAt(i); // aqui vamos cogiendo cada digito del numero factorial pasando por todas sus posiociones "i"
            while (parejaS.length() == 2) { // creamo un while para decirle al rpograma que solo vaya guardando digitos de dos en dos
                pareja = Integer.parseInt(parejaS); // y aqui es cuando pasamos esa pareja de digitos que estaban de tipo string a tipo entero
                if (pareja <= 32) {  // creamos un if y preguntamos que si la pareja de numero que hemos cogido anteriormente es menor o igual que 32 pues...
                    System.out.print("~"); // ... la imrpimimos haciendo que valga directamente "~"
                }else{ // en el caso de que no sea menor o igual a 32, es decir, mayor pues...
                System.out.print((char)pareja);  // hacemos la conversion de dicho numero pasandolo a acsii             
                }
                parejaS = ""; // y esto es para actualizar la variable, es decir, el factorial de 7 es 5040, pues una vez hecho todo el "if" anterior con el 50 pues se restablezca su valor a cadena vacia para deja paso al siguiente numero que seria el 40 y asi evitar que se nos amontonen los numeros
            }
        }   
       
        int n = cadena.length(); //como ultimo creamos una variable que nos diga la longitud de nuestra numero
        //si la longitud es impar significa que nos sobrara un numero que quedara solitario por ejemplo con el factorial de 8 que es 40320 el ultimo 0 se nos queda sin pareja, pues para cogerlo hacemos lo siguiente
        if (n%2 != 0) { // si la longitud de n es impar significa que sobra un numero al final por lo que...
            System.out.print("~"); // ese numero siempre será menor que 32 ya que solo es un digito y lo maximo es 9 asi que lo sustituimos por la "~"
        }       
   }
}


He probado el ejercicio con varios ejemplos no solo con el numero 7 y me va perfecto aqui tienes los ejemplos, suerte!!