Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: yolanda10 en 23 Septiembre 2013, 22:33 pm



Título: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: yolanda10 en 23 Septiembre 2013, 22:33 pm
Buenas tardes requiero generar un pequeño programa que combine 6 números del 1 al 40 sin repetición y que sumados den como resultado 125, necesito que muestre todas las posibilidades existentes para llegar a ese resultado, también sin repetición.
¿Alguien puede ayudarme?


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: Danyfirex en 23 Septiembre 2013, 22:43 pm
que has logrado hasta ahorita?


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: yolanda10 en 24 Septiembre 2013, 01:19 am
Sólo combinación de números,6 números del 1 al 40 pero necesito que sumados den como resultado 125, necesito que muestre todas las combinaciones  para llegar a ese resultado, también sin repetición.


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: MCKSys Argentina en 24 Septiembre 2013, 01:51 am
Lo primero que se me ocurre es elgo como:

Código
  1. for i = 1 to 35
  2.  for j = i+1 to 36
  3.    for k = j+1 to 37
  4.      for l = k+1 to 38
  5.        for m = l+1 to 39
  6.          for n = m+1 to 40
  7.            if i+j+k+l+m+n = 125 then
  8.              print i & " + " & j & " + " & k & " + " & l & " + " & m & " + " & n & " = 125"
  9.  
             
             
PD: En pseudo-vb-codigo (:))


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: yolanda10 en 24 Septiembre 2013, 02:26 am
El código me genera error.


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: Danyfirex en 24 Septiembre 2013, 02:44 am
Pasado a vb6 funciona bien

@MCKSys Argentina 56363 coincidencias  ;-)


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: MCKSys Argentina en 24 Septiembre 2013, 03:58 am
El código me genera error.

Claro que te generará error. Como puse, está en PSEUDO-CODIGO-VB (no se enojen, es lo único que se me ocurre para bautizar el algoritmo expuesto de esa forma).

Es la idea de lo que puedes hacer. Ahora debes armarte un código que haga lo que dice el algoritmo...  :P

Saludos!

Pasado a vb6 funciona bien

@MCKSys Argentina 56363 coincidencias  ;-)

 :o No pensaba que iban a ser tantas!


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: Danyfirex en 24 Septiembre 2013, 04:22 am
Claro que te generará error. Como puse, está en PSEUDO-CODIGO-VB (no se enojen, es lo único que se me ocurre para bautizar el algoritmo expuesto de esa forma).

Es la idea de lo que puedes hacer. Ahora debes armarte un código que haga lo que dice el algoritmo...  :P

Saludos!

 :o No pensaba que iban a ser tantas!
ups  :xD me equivoque son 56364 coincidencias.  :laugh:

Yo tampoco pensé que serian tantas :S.

saludos


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: cabrax en 24 Septiembre 2013, 14:44 pm
for i = 1 - 40
     j 1 - 40
       k 1 - 40
        l 1- 40
           m 1- 40
             n 1 -40
                suma =i+j+k+l+m+n
                if suma = 125 then
                     if i!=j!=k!=l!=m!=n then
                          print ijklmn

tarda un poco mas porq suma todos los nros con todos, pero soluciona el problema ( me parece )


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: yolanda10 en 24 Septiembre 2013, 21:24 pm
No se me ocurre como hacer el código para que cumpla con lo solicitado en el algoritmo, me pueden ayudar con el código


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: Shell Root en 24 Septiembre 2013, 22:29 pm
No se te tiene que ocurrir nada, AHI LO TIENES!, ajjaja


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: MCKSys Argentina en 24 Septiembre 2013, 22:43 pm
No se me ocurre como hacer el código para que cumpla con lo solicitado en el algoritmo, me pueden ayudar con el código

Bueno, yo sigo la regla del foro: no se hacen tareas. Por esto no te daré el codigo para que copies y pegues.

Necesitas hacerlo por ti mismo/a, sino NUNCA aprenderas.

Algunos tips:

Debes declarar las variables usadas y cerrar los for's.

Los resultados correctos (lo que cumplen el requisito) saldran en la ventana de debug (inmediato) si reemplazas el print por debug.print.

Podrias colocar todo el codigo en el evento click de un boton (por dar un ejemplo).

Saludos!


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: Ahorsa en 25 Septiembre 2013, 07:58 am
Yo pude resolverlo en Python (cambie las características del programa) solo que, hay algunos errores que no logro imaginar la solución.

Código
  1. n=0;
  2. for a in range(0,6):
  3. for b in range(0,6):
  4.  for c in range(0,6):
  5. if (a!=b!=c):
  6. if ((a+b+c)==2):
  7. print(a,b,c);
  8. n+=1
  9.  
  10. print ("Se han encontrado:",n,"maneras posibles de encontrar la suma")
  11.  

Este solo calcula A+B+C = 2
Pero en si el programa arroja:
Código:
0 2 0
1 0 1
Se han encontrado 2 maneras posibles de encontrar la suma

cuando en realidad existen mas maneras por ejemplo:
1,1,0
2,0,0
0,0,2; etc.
¿Tendré que mover los fors para que cada uno tenga su orden de principio a fin?
Saludos!
Edito: Creo que viéndolo bien, tengo mal el concepto inicial.


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: yolanda10 en 25 Septiembre 2013, 19:38 pm
Gracias, pero estas considerando el 0 y el rango es del 1 al 40. Agradecería si me ayudas con el código para que cumpla con lo solicitado en el algoritmo


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: arts en 25 Septiembre 2013, 21:44 pm
Yo lo he realizado en Java, aunque tendrías que ver si te vale que se repitan los números en diferente orden.

Código
  1. package PackPrimerDia;
  2.  
  3. public class PrimerDia {
  4. public static void main (String[] args){
  5. int x = 0;
  6. for (int c_1=1;c_1<=36;c_1++){
  7. for (int c_2=1;c_2<=37;c_2++){
  8. for (int c_3=1;c_3<=38;c_3++){
  9. for (int c_4=1;c_4<=39;c_4++){
  10. for (int c_5=1;c_5<=40;c_5++){
  11. if (c_1+c_2+c_3+c_4+c_5 == 125){
  12. x++;
  13. System.out.println("Combinacion Nº: "+x +"  "+c_1+" "+c_2+" " +c_3+" " +c_4+" " +c_5);
  14. }
  15. }
  16. }
  17. }
  18. }
  19. }
  20. }
  21.  
  22.  
  23. }
  24.  


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: yolanda10 en 25 Septiembre 2013, 22:30 pm
Gracias por tu aporte lo he probado pero genera repetición aunque en diferente orden, aumenta mucho el número de la lista


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: arts en 25 Septiembre 2013, 23:11 pm
La otra forma que es la que no me gustaría tener que hacerla, es la de guardar en un array bidimensional de a saber cuantas filas y 6columnas, cada una de las lineas generadas se comprueba primero que no se encuentren en el array y una vez comprobado que no se encuentra la guardo como válida,sim embargo no me gusta porque me parece fatal optimizado el algoritmo, tardará 4 veces mas en generarlo, aunque si que no se repetiría ningún nº.


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: MCKSys Argentina en 25 Septiembre 2013, 23:20 pm
En python:

Código
  1. def main():
  2.    cuenta=0
  3.    for i in range(1,36):
  4.      for j in range(i+1,37):
  5.        for k in range(j+1 , 38):
  6.          for l in range(k+1 , 39):
  7.            for m in range(l+1 , 40):
  8.              for n in range(m+1 , 41):
  9.                if i+j+k+l+m+n == 125:
  10.                  print str(i) + " + " + str(j) + " + " + str(k) + " + " + str(l) + " + " + str(m) + " + " + str(n) + " = 125"
  11.                  cuenta += 1
  12.    print 'Total: %s' %cuenta
  13.  
  14. if __name__ == '__main__':
  15.    main()
  16.  

Imprime un total de 56363 combinaciones posibles.

Saludos!

PD: Segun el enunciado, los que no deben repetirse son los 6 números de la suma.
Las combinaciones posibles pueden repetir los números en diferentes posiciones, siempre y cuando no repitan números en la misma suma.


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: arts en 25 Septiembre 2013, 23:38 pm
Joooder si se me permite la expresión, acabo de ver tu código y me parece increible, y ¿ dices que es lo primero que se te ocurre a bote pronto ? XD, que bueno.


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: BlackZeroX en 26 Septiembre 2013, 05:38 am
Aplica el concepto de divide y vencerás... es posible que se agilice...

Dulces Lunas!¡.


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: yolanda10 en 27 Septiembre 2013, 19:20 pm
Gracias por las respuestas me han servido mucho y particularmente me facilito mucho hacerlo en java.


Título: Re: GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125
Publicado por: Miseryk en 30 Septiembre 2013, 20:13 pm
Una pregunta, los resultados no deben tener números iguales entre sí? o cada secuencia por separada?