Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Unchained en 5 Abril 2014, 19:58 pm



Título: [JAVA] Programa irresoluble en java
Publicado por: Unchained en 5 Abril 2014, 19:58 pm
Muy buenas amigos, queria preguntarles si alguien sabria realizar este code, lo econtre en un libro y no he sido capaz de resolverlo.

Es un auténtico dolor de cabeza.

Un saludo

 (http://thumbs.subefotos.com/52b50b7640c827dfe107f9c2847f1601o.jpg) (http://subefotos.com/ver/?52b50b7640c827dfe107f9c2847f1601o.png)


Título: Re: [JAVA] Programa irresoluble en java
Publicado por: Mitsu en 5 Abril 2014, 20:29 pm
Según lo entiendo yo, ésto es así:

Ingresar una serie de números mayor o igual a 1 y menor o igual a 1000.

Código
  1. Scanner read = new Scanner(System.in);
  2. System.out.println("Ingrese una serie de números enteros");
  3. String numeros = read.nextLine();

Convertimos los números a enteros:

Código
  1. String[] numeroserie = numeros.split(" ");
  2. int[] serie = new int[numeroserie.length];
  3.  
  4. try {
  5. for(int i=0; i<numeroserie.length; i++) {
  6. serie[i] = Integer.parseInt(numeroserie[i]);
  7. }
  8. } catch(NumberFormatException ex) {
  9. ex.printStackTrace();
  10. }

Sacamos el total y el porcentaje que pide:

Código
  1. int total = 0;
  2. for(int i=0; i<serie.length; i++) {
  3. total += serie[i];
  4. }
  5.  
  6. int porcentaje = 25 * total / 100;

Creamos un método para determinar el menor de la serie:

Código
  1. public int getMenor(int... numeros) {
  2. int menor = numeros[0];
  3. for(int number : numeros) {
  4. if(number < menor) {
  5. menor = number;
  6. }
  7. }
  8. return menor;
  9. }

Ahora ya sabemos quién es el cuadril, en caso no alcance por ser mayor al 25% descartas ese número y sigues con el 2do menor, y así...


Luego para ordenar la lista es muy sencillo, debes de saberlo. Recorres la nueva lista en un for e imprimes con un espacio intermedio.


Salu2.


Título: Re: [JAVA] Programa irresoluble en java
Publicado por: Unchained en 5 Abril 2014, 20:42 pm
Según lo entiendo yo, ésto es así:

Ingresar una serie de números mayor o igual a 1 y menor o igual a 1000.

Código
  1. Scanner read = new Scanner(System.in);
  2. System.out.println("Ingrese una serie de números enteros");
  3. String numeros = read.nextLine();

Convertimos los números a enteros:

Código
  1. String[] numeroserie = numeros.split(" ");
  2. int[] serie = new int[numeroserie.length];
  3.  
  4. try {
  5. for(int i=0; i<numeroserie.length; i++) {
  6. serie[i] = Integer.parseInt(numeroserie[i]);
  7. }
  8. } catch(NumberFormatException ex) {
  9. ex.printStackTrace();
  10. }

Sacamos el total y el porcentaje que pide:

Código
  1. int total = 0;
  2. for(int i=0; i<serie.length; i++) {
  3. total += serie[i];
  4. }
  5.  
  6. int porcentaje = 25 * total / 100;

Creamos un método para determinar el menor de la serie:

Código
  1. public int getMenor(int... numeros) {
  2. int menor = numeros[0];
  3. for(int number : numeros) {
  4. if(number < menor) {
  5. menor = number;
  6. }
  7. }
  8. return menor;
  9. }

Ahora ya sabemos quién es el cuadril, en caso no alcance por ser mayor al 25% descartas ese número y sigues con el 2do menor, y así...


Luego para ordenar la lista es muy sencillo, debes de saberlo. Recorres la nueva lista en un for e imprimes con un espacio intermedio.


Salu2.

Muchas Gracias Mitsu , tengo una duda,
para ordenar con for seria algo parecido a esto ?

Código:
public static void burbujaPalabras (String lista_palabras[]){
        boolean ordenado=false;
        int cuentaIntercambios=0;
        //Usamos un bucle anidado, saldra cuando este ordenado el array
        while(!ordenado){
            for(int i=0;i<lista_palabras.length-1;i++){
                if (lista_palabras[i].compareToIgnoreCase(lista_palabras[i+1])>0){
                    //Intercambiamos valores
                    String aux=lista_palabras[i];
                    lista_palabras[i]=lista_palabras[i+1];
                    lista_palabras[i+1]=aux;
                    //indicamos que hay un cambio
                    cuentaIntercambios++;
                }
            }
            //Si no hay intercambios, es que esta ordenado.
            if (cuentaIntercambios==0){
                ordenado=true;
            }
            //Inicializamos la variable de nuevo para que empiece a contar de nuevo
            cuentaIntercambios=0;
        }
 
    }


Título: Re: [JAVA] Programa irresoluble en java
Publicado por: Unchained en 5 Abril 2014, 21:23 pm
No he sido capaz de crear el for , y aun no he conseguido que los System.out.println() me muestren algo.
Un saludo y muchas gracias


Título: Re: [JAVA] Programa irresoluble en java
Publicado por: Mitsu en 5 Abril 2014, 23:07 pm
Hay muchos métodos para ordenar un arreglo, tienes el quicksort, la burbuja, etc.

Si quieres algo rápido, puedes usar el método sort de List, para ésto tendrías que convertir el array a List:

Código
  1. public static List<Integer> getSortList(int[] serie) {
  2. // se supone que hasta aqui ya hemos encontrado nuestro cuadril
  3. int cuadril = ?
  4. List<Integer> serie2list = Arrays.asList(serie); // convierte a List el array serie que contiene los numeros
  5. serie2list.remove("cuadril"); // elimina el cuadril momentaneamente
  6. serie2list.sort(); // ordena la lista
  7. serie2list.add(0,cuadril); // agrega el cuadril en la primera posicion
  8.  
  9. return serie2list;
  10. }
  11.  
  12. // imprime la lista ordenada con el cuadril en el primer lugar
  13. for(Integer i : getSortList(serie)) {
  14. System.out.print(i+" ");
  15. }

También puedes convertir una List a Array con el método toArray(). Ej:

Código
  1. Object[] array = getSortList(serie).toArray();


Salu2.


Título: Re: [JAVA] Programa irresoluble en java
Publicado por: Unchained en 6 Abril 2014, 00:46 am
Gracias por la rapidez, al intentar compilar me da estos errores:
(http://nsae01.casimages.net/img/2014/04/06/mini_140406124847280112.png) (http://www.casimages.es/i/140406124847280112.png.html)


Título: Re: [JAVA] Programa irresoluble en java
Publicado por: Mitsu en 6 Abril 2014, 01:55 am
Hmm por lo que veo fallan algunos conceptos básicos que debes tener. Debes de darte cuenta que el error en el método te lo da porque no has importado la clase java.util.List. Y en la línea int cuadril = ? no es una línea de código, te pongo el '?' porque ese método debe de usarse luego que ya se hallado el cuadril. Para ésto crea una variable llamada cuadril y en el método que detecta el cuadril, asígnale el cuadril detectado a la variable. Hay que aprender a leer los errores que te da el IDE.

Salu2.


Título: Re: [JAVA] Programa irresoluble en java
Publicado por: Unchained en 6 Abril 2014, 02:40 am
Buenas Mitsu, y perdona por la paliza que te estoy dando.. pero es que soy muy novato en esto aun..

Me siguen dando mogollón de errores de compilación y ya no se que mas cambiar.
Serias tan amable de ponerme el codigo todo en uno asi veo que estoy haciendo mal?

De todas formas muchisimas gracias por todo.

Un saludo