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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema repetición de números
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema repetición de números  (Leído 3,443 veces)
piete2

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Problema repetición de números
« en: 21 Febrero 2015, 02:08 am »

Hola amigos, tengo un problema. Un profesor nos ha mandado "jugar la lotería" con un boleto que siempre contiene los mismos números (los números van entre 1 y 49). Entonces su intención es averiguar el número de dias, meses, etc que se tarda en realizar n coincidencias (máximo 6 coincidencias). Entonces, mi problema reside en la comparación de número random generado y los que ya tengo en el vector. He probado mil métodos y no doy con el adecuado, si me pudiérais ayudar os lo agradezco.

Código
  1. package sorteo;
  2. import java.util.Random;
  3. import java.util.Scanner;
  4.  
  5. public class Sorteo {
  6.  
  7.  
  8.    public static void main(String[] args) {
  9.  
  10.        int i,j,contador = 0,semanas=0,n;
  11.  
  12.        int numeros[]=new int[6];
  13.        int boleto[]=new int[6];
  14.        Scanner s= new Scanner(System.in);
  15.        System.out.println("Dame número de coincidencias");
  16.        n=s.nextInt();
  17.        //Boleto predefinido
  18.        boleto[0]=1;
  19.        boleto[1]=3;
  20.        boleto[2]=15;
  21.        boleto[3]=35;
  22.        boleto[4]=39;
  23.        boleto[5]=40;
  24. Random rnd=new Random();
  25.        //Generar números aleatorios
  26.        while(contador!=n){
  27.            semanas++;
  28.            contador=0;
  29.            for( i=0;i<6;i++){
  30.                int x=(int)(rnd.nextInt(49-1+1)+1);
  31.  
  32.                    if(i==0)//Sólo para la primera posición del vector
  33.                        numeros[i]=x;
  34.                    else{
  35.                        for(j=0;j<i;j++){
  36.                            if((numeros[j]!=x)){//Comparación de número generado con el del vector
  37.                                numeros[i]=x;
  38.  
  39.                            }
  40.                            else{
  41.                                i--;
  42.                                //j=6;
  43.                            }
  44.  
  45.                         }
  46.                    }          
  47.  
  48.  
  49.  
  50.        }
  51.            //Ver numeros del vector aleatorios
  52.        for(i=0;i<6;i++)
  53.            System.out.println(numeros[i]);
  54.            System.out.println("------------------------------------");
  55.  
  56.            //Comparar números del boleto aleatorio del fijo
  57.        for(i=0;i<6;i++){
  58.            for(j=0;j<6;j++){
  59.                if((boleto[i])==(numeros[j])) {
  60.                    contador++;
  61.                }
  62.  
  63.                }
  64.            }
  65.        //System.out.println("Contador"+contador);
  66.        }
  67.       // System.out.println("Contador"+contador);
  68.        System.out.println("Las semanas han sido: "+semanas);
  69.        double meses,años,siglos;
  70.        meses=semanas/4;
  71.        años=meses/12;
  72.        siglos=años/100;
  73.        System.out.println(meses+" meses");
  74.        System.out.println(años+" años");
  75.        System.out.println(siglos+" siglos");
  76.    }
  77.  
  78.    }


« Última modificación: 24 Febrero 2015, 16:46 pm por piete2 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema repetición de números
« Respuesta #1 en: 21 Febrero 2015, 02:11 am »

Modifiqué el mensaje, para que tu codigo sea más legible usa las etiquetas GeSHi


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Problema repetición de números
« Respuesta #2 en: 21 Febrero 2015, 03:24 am »

No estoy seguro si existe un método como ese. Si es así seguramente este en Arrays o en alguna de esas clases utilizadas para ordenar elementos.

De todas maneras, no entiendo porque te complicas tanto. Quieres un método que compare un int[] con otro int[]? pues bien... Porque no lo haces tu?

Código
  1. public static boolean comparator(int[] a, int[] b){
  2.        if (a.length != b.length) {return false;}
  3.        for (int i = 0; i < a.length; i++) {
  4.            if (a[i] != b[i]) {return false;}
  5.        }
  6.        return true;
  7. }

Ese método comparara que tengan exactamente los mismos elementos en la misma posición.

Suerte. Cualquier duda nos dices.
En línea

piete2

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Problema repetición de números
« Respuesta #3 en: 21 Febrero 2015, 14:11 pm »

Hola y gracias por contestar, el profesor quiere que desarrollemos métodos para poder resolver este tipo de problemas sin la clase boolean, entonces es por ello que me estoy dejando tantísimo el cerebro en este programa (aparentemente casi sin solución porque...)
Entonces me veo obligado a hacer varios if y else, pero no me da mucho resultado.

De nuevo, gracias por contestar.
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Problema repetición de números
« Respuesta #4 en: 21 Febrero 2015, 14:34 pm »

el profesor quiere que desarrollemos métodos para poder resolver este tipo de problemas sin la clase boolean...

¿Eso te ha dicho el profesor? Vaya, sin comentarios. Boolean no te ayuda en absolutamente nada, sólo sirve para evaluar condiciones o colocar flags para indicar si un estado es verdadero o no, si un proceso se pudo ejecutar o no.

Código
  1. public int[] matches(int[] tickets, int[] system) {
  2.    // utilizamos una lista porque no sabemos la cantidad de aciertos.
  3.    List<Integer> matches = new ArrayList<>();
  4.    if(ticket.length < system.length) {
  5.        javax.swing.JOptionPane.showMessageDialog(null, "Hace falta marcar números en su boleto");
  6.        return;
  7.    }
  8.    for(byte i=0; i<tickets.length; i++) {
  9.        for(byte k=0; k<system.length; k++) {
  10.            if(tickets[i] == system[k])
  11.                matches.add(tickets[i]);
  12.        }
  13.    }
  14.    return matches;
  15. }
  16.  
  17. List<Integer> matches = matches(tickets, system);
  18. if(matches.size() == system.length) {
  19.    // si los tamaños son iguales hay match
  20.    javax.swing.JOptionPane.showMessageDialog(null, "¡Felicidades, ha ganado el premio mayor!");
  21. } else {
  22.    String numbers = "";
  23.    for(Integer i : matches) {
  24.        numbers += i+"\n";
  25.    }
  26.    javax.swing.JOptionPane.showMessageDialog(null, "Ha tenido "+matches.size()+" aciertos:\n\n"+numbers);
  27. }
« Última modificación: 21 Febrero 2015, 14:36 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
piete2

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Problema repetición de números
« Respuesta #5 en: 21 Febrero 2015, 15:17 pm »

Muchísimas gracias de verdad, me habéis salvado la vida entre todos, ya está resuelto :D

Os agradezco de corazón lo que habéis hecho por mi!!
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Problema repetición de números
« Respuesta #6 en: 21 Febrero 2015, 15:22 pm »

De nada. Si tienes un minuto, colócale al título del tema el ícono check verde.

Salu2.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Problema repetición de números
« Respuesta #7 en: 21 Febrero 2015, 17:34 pm »

Por cierto, me gustaría agregar que en mi respuesta nunca utilice una CLASE boolean.

Si tu profesor no te deja utilizar una variable booleana podrías perfectamente remplazar el boolean por un byte. utilizando el 0 como falso y el 1 como verdadero.

(Por otro lado... Tu profesor no me cae bien.)  :-X

Bye!   ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines