elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Java / Re: [JAVA] Ejercicio Java , no se por donde cogerlo en: 30 Marzo 2014, 20:08 pm
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
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package practica;
  6.  
  7. import java.util.Scanner;
  8.  
  9. /**
  10.  *
  11.  * @author Charlie
  12.  */
  13. public class Practica {
  14.  
  15.    /**
  16.      * @param args the command line arguments
  17.      */
  18.    public static void main(String[] args) {
  19.  
  20.        Scanner sc = new Scanner(System.in);
  21.  
  22.        short num; //inicializamos la variable del numero que queremos pedir al usuario
  23.  
  24.        System.out.println("Introduca un numero entero positivo."); // un print donde avisemos al usuario que debe introducir el numero a continuacion
  25.        num = sc.nextShort(); // pedimos por teclado un numero y lo guardamos en la variable "num"
  26.  
  27.        //Calculamos el factorial de num
  28.  
  29.  
  30.        int fact = 1;
  31.        for(int i = 2 ; i <= num ; i++){
  32.            fact *= i;
  33.        }
  34.        System.out.println(fact); //no te lo pide el enunciado pero yo imprimo el resultado del factorial por comodidad y hacer mis comprobaciones
  35.  
  36.  
  37.        String cadena = String.valueOf(fact); // pasamos a string el numero factorial para poder recorrerlo mas adelante en le "for"
  38.  
  39.  
  40.        String parejaS = ""; // creamos esta variable string para guardar las parejas de digitos que vamos cogiendo del numero factorial
  41.        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
  42.  
  43.        for (int i = 0; i < cadena.length(); i++) { //iniciamos el for
  44.            parejaS += cadena.charAt(i); // aqui vamos cogiendo cada digito del numero factorial pasando por todas sus posiociones "i"
  45.            while (parejaS.length() == 2) { // creamo un while para decirle al rpograma que solo vaya guardando digitos de dos en dos
  46.                pareja = Integer.parseInt(parejaS); // y aqui es cuando pasamos esa pareja de digitos que estaban de tipo string a tipo entero
  47.                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...
  48.                    System.out.print("~"); // ... la imrpimimos haciendo que valga directamente "~"
  49.                }else{ // en el caso de que no sea menor o igual a 32, es decir, mayor pues...
  50.                System.out.print((char)pareja);  // hacemos la conversion de dicho numero pasandolo a acsii            
  51.                }
  52.                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
  53.            }
  54.        }    
  55.  
  56.        int n = cadena.length(); //como ultimo creamos una variable que nos diga la longitud de nuestra numero
  57.        //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
  58.        if (n%2 != 0) { // si la longitud de n es impar significa que sobra un numero al final por lo que...
  59.            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 "~"
  60.        }      
  61.   }
  62. }

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

Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines