Autor
|
Tema: Problema repetición de números (Leído 3,423 veces)
|
piete2
Desconectado
Mensajes: 22
|
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. package sorteo; import java.util.Random; import java.util.Scanner; public class Sorteo { public static void main (String[] args ) { int i,j,contador = 0,semanas=0,n; int numeros[]=new int[6]; int boleto[]=new int[6]; Scanner s = new Scanner (System. in); System. out. println("Dame número de coincidencias"); n=s.nextInt(); //Boleto predefinido boleto[0]=1; boleto[1]=3; boleto[2]=15; boleto[3]=35; boleto[4]=39; boleto[5]=40; //Generar números aleatorios while(contador!=n){ semanas++; contador=0; for( i=0;i<6;i++){ int x=(int)(rnd.nextInt(49-1+1)+1); if(i==0)//Sólo para la primera posición del vector numeros[i]=x; else{ for(j=0;j<i;j++){ if((numeros[j]!=x)){//Comparación de número generado con el del vector numeros[i]=x; } else{ i--; //j=6; } } } } //Ver numeros del vector aleatorios for(i=0;i<6;i++) System. out. println(numeros [i ]); System. out. println("------------------------------------"); //Comparar números del boleto aleatorio del fijo for(i=0;i<6;i++){ for(j=0;j<6;j++){ if((boleto[i])==(numeros[j])) { contador++; } } } //System.out.println("Contador"+contador); } // System.out.println("Contador"+contador); System. out. println("Las semanas han sido: "+semanas ); double meses,años,siglos; meses=semanas/4; años=meses/12; siglos=años/100; System. out. println(meses +" meses"); System. out. println(años +" años"); System. out. println(siglos +" siglos"); } }
|
|
« Última modificación: 24 Febrero 2015, 16:46 pm por piete2 »
|
En línea
|
|
|
|
engel lex
|
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
Mensajes: 445
Grandes conocimientos engendran grandes dudas
|
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? public static boolean comparator(int[] a, int[] b){ if (a.length != b.length) {return false;} for (int i = 0; i < a.length; i++) { if (a[i] != b[i]) {return false;} } return true; }
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
Mensajes: 22
|
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
Mensajes: 625
|
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. public int[] matches(int[] tickets, int[] system) { // utilizamos una lista porque no sabemos la cantidad de aciertos. List<Integer> matches = new ArrayList<>(); if(ticket.length < system.length) { javax. swing. JOptionPane. showMessageDialog(null, "Hace falta marcar números en su boleto"); return; } for(byte i=0; i<tickets.length; i++) { for(byte k=0; k<system.length; k++) { if(tickets[i] == system[k]) matches.add(tickets[i]); } } return matches; } List<Integer> matches = matches(tickets, system); if(matches.size() == system.length) { // si los tamaños son iguales hay match javax. swing. JOptionPane. showMessageDialog(null, "¡Felicidades, ha ganado el premio mayor!");} else { numbers += i+"\n"; } javax. swing. JOptionPane. showMessageDialog(null, "Ha tenido "+matches. size()+" aciertos:\n\n"+numbers );}
|
|
« Ú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
Mensajes: 22
|
Muchísimas gracias de verdad, me habéis salvado la vida entre todos, ya está resuelto Os agradezco de corazón lo que habéis hecho por mi!!
|
|
|
En línea
|
|
|
|
Usuario Invitado
Desconectado
Mensajes: 625
|
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
Mensajes: 445
Grandes conocimientos engendran grandes dudas
|
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.) Bye!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Problema] Programa para averiguar números pares entre 2 números
Programación Visual Basic
|
Dreamaker
|
3
|
5,839
|
21 Mayo 2010, 23:45 pm
por Shell Root
|
|
|
Generar numeros aleatorios sin repeticion[C]
Programación C/C++
|
HRSLASH
|
2
|
25,335
|
28 Diciembre 2010, 06:58 am
por von Newman
|
|
|
¿Números aleatorios sin repetición?
Programación Visual Basic
|
theluigy13etv
|
7
|
19,129
|
5 Marzo 2012, 18:27 pm
por MCKSys Argentina
|
|
|
Números aleatorios sin repeticion
Programación C/C++
|
samirllorente
|
2
|
2,834
|
12 Abril 2013, 19:32 pm
por leosansan
|
|
|
for y repetición de numeros en c
Programación C/C++
|
diegoecw
|
2
|
2,415
|
29 Marzo 2017, 05:35 am
por diegoecw
|
|