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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [JAVA] Ejercicio Java , no se por donde cogerlo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [JAVA] Ejercicio Java , no se por donde cogerlo  (Leído 5,367 veces)
Xh4xor23

Desconectado Desconectado

Mensajes: 61


Ver Perfil
[JAVA] Ejercicio Java , no se por donde cogerlo
« en: 25 Marzo 2014, 20:12 pm »

Tema Resuelto.


« Última modificación: 31 Marzo 2014, 12:11 pm por Xh4xor23 » En línea

ThinkByYourself

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Re: [JAVA] Ejercicio Java , no se por donde cogerlo
« Respuesta #1 en: 26 Marzo 2014, 02:07 am »

1. Le pasas un número al programa
2. Calculas la multiplicación de él por el anterior, por el anterior, por el anterior... y así hasta 1 (0 no porque sino se jode el invento).
3. Al resultado, le coges los dígitos de más a la izquierda, y vas cogiendo de dos en dos (si se queda uno suelto, también entra, creo...). Con cada par, coges y lo substituyes por el ASCII (en decimal, supongo) que le corresponda a dicho valor. Pero si el valor que forma la pareja es igual o menor que 32, en lugar de eso, lo cambias por un ~.
4. Imprimir cada vez que se pase por el 3, hasta terminar con todo el resultado del 2.
Creo.


En línea

No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.
Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: [JAVA] Ejercicio Java , no se por donde cogerlo
« Respuesta #2 en: 26 Marzo 2014, 06:33 am »

La verdad no te entiendo, pero supongo que quieres que a partir de un numero, se descomponga en parejas de derecha a izquierda, y convierta cada pareja en ascii y su queda un digito unico, lo convierte tambien. Este code te servirá:

Código
  1. public static  void getAsciiPorNumeroEnPares(int numero) {
  2. String digitos = String.valueOf(numero); // convierte el numero a string
  3. String temp = digitos; // copia el string para recorrer el for
  4. List<Character> digitosAscii = new ArrayList<>(); // almacena los caracteres ascii
  5. // temp.length()/2 porque se toman los numeros en pareja
  6. for(byte i=0; i<temp.length()/2; i++) {
  7. int digito; // almacena el digito a guardar en ascii
  8. if(digitos.length() >= 2) {
  9. int inicio = digitos.length() -2; // inicio = cantidad de digitos del numero - 2
  10. int finalx = digitos.length(); // final = cantidad de digitos del numero
  11. // obtiene la ultima pareja (derecha) de los digitos
  12. digito = Integer.valueOf(digitos.substring(inicio,finalx));
  13. // elimina la pareja que se ha tomado de los digitos
  14. digitos = digitos.substring(0,finalx-2);
  15. }
  16. else {
  17. // si solo queda un digito lo convierte a entero para convertirlo a ascii
  18. digito = Integer.valueOf(digitos);
  19. }
  20. digitosAscii.add((char) digito); // convierte el digito a ascii lo agrega a la lista
  21. }
  22. // recorre la lista de codigos ascii y los imprime
  23. for(char c : digitosAscii)
  24. System.out.println("Digito:\t"+c);
  25. }
« Última modificación: 26 Marzo 2014, 15:01 pm por Mitsu » En línea

Xh4xor23

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: [JAVA] Ejercicio Java , no se por donde cogerlo
« Respuesta #3 en: 26 Marzo 2014, 13:59 pm »

La verdad no te entiendo, pero supongo que quieres que a partir de un numero, se descomponga en parejas de derecha a izquierda, y convierta cada pareja en ascii y su queda un digito unico, lo convierte tambien. Este code te servirá:

Código
  1. public static getAsciiPorNumeroEnPares(int numero) {
  2. String digitos = String.valueOf(numero); // convierte el numero a string
  3. String temp = digitos; // copia el string para recorrer el for
  4. List<Character> digitosAscii = new ArrayList<>(); // almacena los caracteres ascii
  5. // temp.length()/2 porque se toman los numeros en pareja
  6. for(byte i=0; i<temp.length()/2; i++) {
  7. int digito; // almacena el digito a guardar en ascii
  8. if(digitos.length() >= 2) {
  9. int inicio = digitos.length() -2; // inicio = cantidad de digitos del numero - 2
  10. int finalx = digitos.length(); // final = cantidad de digitos del numero
  11. // obtiene la ultima pareja (derecha) de los digitos
  12. digito = Integer.valueOf(digitos.substring(inicio,finalx));
  13. // elimina la pareja que se ha tomado de los digitos
  14. digitos = digitos.substring(0,finalx-2);
  15. }
  16. else {
  17. // si solo queda un digito lo convierte a entero para convertirlo a ascii
  18. digito = Integer.valueOf(digitos);
  19. }
  20. digitosAscii.add((char) digito); // convierte el digito a ascii lo agrega a la lista
  21. }
  22. // recorre la lista de codigos ascii y los imprime
  23. for(char c : digitosAscii)
  24. System.out.println("Digito:\t"+c);
  25. }


Muchas Gracias Mitsu, la verdad que os he puesto el enunciado tal y como nos lo dan y es que es francamente ilegible...

Te queria preguntar que necesito para compilarlo y probarlo (perdona mi ignorancia es que soy novato :S) porque lo he cargado en eclipse y me salen mogollon de errores imagino que sea porque tengo que añadir la clase..

De todas formas muchas gracias.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: [JAVA] Ejercicio Java , no se por donde cogerlo
« Respuesta #4 en: 26 Marzo 2014, 15:22 pm »

Te salen errores en primera porque olvidé colocar el tipo de retorno al método (ya se lo puse, mira el nuevo código). Además, como eres nuevo intuyo que no sabes aún los conceptos de POO. No te preocupes, todo con calma, paso por paso. Es mejor para tí si haces todo en el main (programación estructurada) ,luego te darás cuenta que ésto no es lo óptimo ya que tendrás el determinado "código spaghetti".

Te sugiero que antes de empezar a realizar ejercicios en un lenguaje, primero estudies el lenguaje. Si no, es como tratar de desarrollar un problema de geometría sin haberla estudiado antes.

Código
  1. public static void main (String[] args) {
  2. Scanner read = new Scanner(System.in);
  3. System.out.println("Ingresa un numero:");
  4. int num = read.nextInt();
  5. int numero = factorial(num);
  6.  
  7. String digitos = String.valueOf(numero); // convierte el numero a string
  8. String temp = digitos; // copia el string para recorrer el for
  9. List<Character> digitosAscii = new ArrayList<>(); // almacena los caracteres ascii
  10. // temp.length()/2 porque se toman los numeros en pareja
  11. for(byte i=0; i<temp.length()/2; i++) {
  12. int digito; // almacena el digito a guardar en ascii
  13. if(digitos.length() >= 2) {
  14. int inicio = digitos.length() -2; // inicio = cantidad de digitos del numero - 2
  15. int finalx = digitos.length(); // final = cantidad de digitos del numero
  16. // obtiene la ultima pareja (derecha) de los digitos
  17. digito = Integer.valueOf(digitos.substring(inicio,finalx));
  18. // elimina la pareja que se ha tomado de los digitos
  19. digitos = digitos.substring(0,finalx-2);
  20. }
  21. else {
  22. // si solo queda un digito lo convierte a entero para convertirlo a ascii
  23. digito = Integer.valueOf(digitos);
  24. }
  25. digitosAscii.add((char) digito); // convierte el digito a ascii lo agrega a la lista
  26. }
  27. // recorre la lista de codigos ascii y los imprime
  28. for(char c : digitosAscii)
  29. System.out.println("Digito:\t"+c);
  30. }

PD: Si tu duda fue disipada, por favor marca el tema como solucionado.
« Última modificación: 26 Marzo 2014, 15:27 pm por Mitsu » En línea

lufalas

Desconectado Desconectado

Mensajes: 7


/workspace/


Ver Perfil
Re: [JAVA] Ejercicio Java , no se por donde cogerlo
« Respuesta #5 en: 26 Marzo 2014, 23:02 pm »

Código
  1. import java.util.Scanner;
  2.  
  3. /*
  4.  * Se calculará el factorial del número de entrada.
  5.  * A continuación se recorrerá el número factorial tomando una pareja de dígitos comenzando en los dígitos
  6.  * más significativos (si queda uno se usará el dígito que queda) y sustituyendo ese par de dígitos
  7.  * por el carácter ASCII asociado al valor decimal del número formado por ellos.
  8.  *
  9.  * Si el número formado por los dígitos es menor o igual que 32, el carácter asociado será el carácter tilde '~'
  10.  *
  11.  * Finalmente se imprimirá la cadena resultante de realizar el paso 2 hasta que no queden dígitos del número
  12.  * factorial
  13.  *
  14.  * */
  15.  
  16. /**
  17.  * @author acarllc
  18.  * For elhacker.net
  19.  */
  20. public class Main {
  21. private static Scanner in;
  22.  
  23. public static void main(String[] args) {
  24. in = new Scanner(System.in);
  25. new Main().process();
  26. in.close();
  27. }
  28.  
  29. private void process() {
  30. int num = leerNumero();
  31. String fact = calcularFactorial(num);
  32. imprimirParejasEnAscii(fact);
  33. }
  34.  
  35. private void imprimirParejasEnAscii(String pFact) {
  36. int i = 0;
  37. String dobleCaracterS = "";
  38. int dobleCaracter;
  39. while(i < pFact.length()){
  40. dobleCaracterS += pFact.charAt(i);
  41. i++;
  42. if(i < pFact.length()){
  43. dobleCaracterS += pFact.charAt(i);
  44. i++;
  45. }
  46. dobleCaracter = Integer.parseInt(dobleCaracterS);
  47. if(dobleCaracter < 32){
  48. System.out.print("~");
  49. }else{
  50. System.out.print((char) dobleCaracter);
  51. }
  52. dobleCaracterS = "";
  53. }
  54. }
  55.  
  56. private String calcularFactorial(int pNum) {
  57. String factS = "1";
  58. int fact = 1;
  59. for (int i=1; i<=pNum; i++) {
  60. fact = fact * i;
  61. }
  62. factS = Integer.toString(fact);
  63. return factS;
  64. }
  65.  
  66. public short leerNumero(){
  67. return in.nextShort();
  68. }
  69.  
  70.  
  71. }
  72.  
« Última modificación: 26 Marzo 2014, 23:04 pm por acarllc » En línea

Charlicines

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [JAVA] Ejercicio Java , no se por donde cogerlo
« Respuesta #6 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!!

En línea

Xh4xor23

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: [JAVA] Ejercicio Java , no se por donde cogerlo
« Respuesta #7 en: 31 Marzo 2014, 12:13 pm »

Muchas Gracias , era exactamente lo que me pedía .
Si alguien mas quiere el enunciado se lo mando por privado.

Gracias al resto también.

Un salu2
En línea

7Bliz

Desconectado Desconectado

Mensajes: 3



Ver Perfil
Re: [JAVA] Ejercicio Java , no se por donde cogerlo
« Respuesta #8 en: 1 Abril 2014, 23:02 pm »

Me has salvado la vida, cazurro :P
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicio Java
Ejercicios
incog 4 7,840 Último mensaje 13 Noviembre 2005, 03:14 am
por Hadess_inf
ejercicio en java
Java
hairam 3 3,220 Último mensaje 25 Junio 2012, 20:17 pm
por konarr
Ejercicio Java
Java
Phantasy 1 2,246 Último mensaje 23 Abril 2013, 09:09 am
por Debci
ejercicio java
Java
piticli25 1 2,340 Último mensaje 19 Diciembre 2013, 13:39 pm
por JADP
Ejercicio Java
Programación General
virustrol 2 2,560 Último mensaje 29 Marzo 2014, 16:12 pm
por virustrol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines