Autor
|
Tema: [JAVA] Ejercicio Java , no se por donde cogerlo (Leído 5,692 veces)
|
Xh4xor23
Desconectado
Mensajes: 61
|
Tema Resuelto.
|
|
« Última modificación: 31 Marzo 2014, 12:11 pm por Xh4xor23 »
|
En línea
|
|
|
|
ThinkByYourself
Desconectado
Mensajes: 191
|
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
|
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á: public static void getAsciiPorNumeroEnPares(int numero) { String digitos = String. valueOf(numero ); // convierte el numero a string String temp = digitos ; // copia el string para recorrer el for List<Character> digitosAscii = new ArrayList<>(); // almacena los caracteres ascii // temp.length()/2 porque se toman los numeros en pareja for(byte i=0; i<temp.length()/2; i++) { int digito; // almacena el digito a guardar en ascii if(digitos.length() >= 2) { int inicio = digitos.length() -2; // inicio = cantidad de digitos del numero - 2 int finalx = digitos.length(); // final = cantidad de digitos del numero // obtiene la ultima pareja (derecha) de los digitos digito = Integer. valueOf(digitos. substring(inicio,finalx )); // elimina la pareja que se ha tomado de los digitos digitos = digitos.substring(0,finalx-2); } else { // si solo queda un digito lo convierte a entero para convertirlo a ascii } digitosAscii.add((char) digito); // convierte el digito a ascii lo agrega a la lista } // recorre la lista de codigos ascii y los imprime for(char c : digitosAscii) System. out. println("Digito:\t"+c ); }
|
|
« Última modificación: 26 Marzo 2014, 15:01 pm por Mitsu »
|
En línea
|
|
|
|
Xh4xor23
Desconectado
Mensajes: 61
|
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á: public static getAsciiPorNumeroEnPares(int numero) { String digitos = String. valueOf(numero ); // convierte el numero a string String temp = digitos ; // copia el string para recorrer el for List<Character> digitosAscii = new ArrayList<>(); // almacena los caracteres ascii // temp.length()/2 porque se toman los numeros en pareja for(byte i=0; i<temp.length()/2; i++) { int digito; // almacena el digito a guardar en ascii if(digitos.length() >= 2) { int inicio = digitos.length() -2; // inicio = cantidad de digitos del numero - 2 int finalx = digitos.length(); // final = cantidad de digitos del numero // obtiene la ultima pareja (derecha) de los digitos digito = Integer. valueOf(digitos. substring(inicio,finalx )); // elimina la pareja que se ha tomado de los digitos digitos = digitos.substring(0,finalx-2); } else { // si solo queda un digito lo convierte a entero para convertirlo a ascii } digitosAscii.add((char) digito); // convierte el digito a ascii lo agrega a la lista } // recorre la lista de codigos ascii y los imprime for(char c : digitosAscii) System. out. println("Digito:\t"+c ); }
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
|
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. public static void main (String[] args ) { Scanner read = new Scanner (System. in); System. out. println("Ingresa un numero:"); int num = read.nextInt(); int numero = factorial(num); String digitos = String. valueOf(numero ); // convierte el numero a string String temp = digitos ; // copia el string para recorrer el for List<Character> digitosAscii = new ArrayList<>(); // almacena los caracteres ascii // temp.length()/2 porque se toman los numeros en pareja for(byte i=0; i<temp.length()/2; i++) { int digito; // almacena el digito a guardar en ascii if(digitos.length() >= 2) { int inicio = digitos.length() -2; // inicio = cantidad de digitos del numero - 2 int finalx = digitos.length(); // final = cantidad de digitos del numero // obtiene la ultima pareja (derecha) de los digitos digito = Integer. valueOf(digitos. substring(inicio,finalx )); // elimina la pareja que se ha tomado de los digitos digitos = digitos.substring(0,finalx-2); } else { // si solo queda un digito lo convierte a entero para convertirlo a ascii } digitosAscii.add((char) digito); // convierte el digito a ascii lo agrega a la lista } // recorre la lista de codigos ascii y los imprime for(char c : digitosAscii) System. out. println("Digito:\t"+c ); }
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
Mensajes: 7
/workspace/
|
import java.util.Scanner; /* * Se calculará el factorial del número de entrada. * A continuación se recorrerá el número factorial tomando una pareja de dígitos comenzando en los dígitos * más significativos (si queda uno se usará el dígito que queda) y sustituyendo ese par de dígitos * por el carácter ASCII asociado al valor decimal del número formado por ellos. * * Si el número formado por los dígitos es menor o igual que 32, el carácter asociado será el carácter tilde '~' * * Finalmente se imprimirá la cadena resultante de realizar el paso 2 hasta que no queden dígitos del número * factorial * * */ /** * @author acarllc * For elhacker.net */ public class Main { private static Scanner in; public static void main (String[] args ) { new Main().process(); in.close(); } private void process() { int num = leerNumero(); String fact = calcularFactorial (num ); imprimirParejasEnAscii(fact); } private void imprimirParejasEnAscii (String pFact ) { int i = 0; int dobleCaracter; while(i < pFact.length()){ dobleCaracterS += pFact.charAt(i); i++; if(i < pFact.length()){ dobleCaracterS += pFact.charAt(i); i++; } dobleCaracter = Integer. parseInt(dobleCaracterS ); if(dobleCaracter < 32){ }else{ System. out. print((char) dobleCaracter ); } dobleCaracterS = ""; } } private String calcularFactorial (int pNum ) { int fact = 1; for (int i=1; i<=pNum; i++) { fact = fact * i; } return factS; } public short leerNumero(){ return in.nextShort(); } }
|
|
« Última modificación: 26 Marzo 2014, 23:04 pm por acarllc »
|
En línea
|
|
|
|
Charlicines
Desconectado
Mensajes: 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 /* * 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!!
|
|
|
En línea
|
|
|
|
Xh4xor23
Desconectado
Mensajes: 61
|
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
Mensajes: 3
|
Me has salvado la vida, cazurro
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ejercicio Java
Ejercicios
|
incog
|
4
|
8,157
|
13 Noviembre 2005, 03:14 am
por Hadess_inf
|
|
|
ejercicio en java
Java
|
hairam
|
3
|
3,454
|
25 Junio 2012, 20:17 pm
por konarr
|
|
|
Ejercicio Java
Java
|
Phantasy
|
1
|
2,433
|
23 Abril 2013, 09:09 am
por Debci
|
|
|
ejercicio java
Java
|
piticli25
|
1
|
2,549
|
19 Diciembre 2013, 13:39 pm
por JADP
|
|
|
Ejercicio Java
Programación General
|
virustrol
|
2
|
2,890
|
29 Marzo 2014, 16:12 pm
por virustrol
|
|