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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Limitar rango de numeros en funcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Limitar rango de numeros en funcion  (Leído 3,327 veces)
luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Limitar rango de numeros en funcion
« en: 15 Abril 2013, 10:47 am »

Hola tengo esta función que lo que hace es ordenar o digamos combinar una serie de números que introduzco.

y estoy buscando como hacer que no me combine mas de dos numeros de la misma serie ejemplo

12 17 21 24 25 26 < eliminar todo registro que tenga esta forma 21 24 25 26

12 18 22 84 85 86< como se ve que no permita tener mas de dos registros dentro de su rango

Con if se podria creo yo pero no encuentro la logica




Código:
 j=0;
    for (i=0;i<=n-2*ver+1  ;i++){
       //if (j>total) break;
      for (j=10+i;j<n ;j+=2){
        combi++;
        if (numeros_no_repe[0+i]>0 && numeros_no_repe[j]<100 ){
            cout<< numeros_no_repe[0+i] <<" " << numeros_no_repe[1+i] <<" "<< numeros_no_repe[5+i]<<" "  << numeros_no_repe[8+i] <<" " << numeros_no_repe[9+i] <<" "<< numeros_no_repe[j]<< endl;
              fs<< numeros_no_repe[0+i] <<" " << numeros_no_repe[1+i] <<" "<< numeros_no_repe[5+i]<<" "  << numeros_no_repe[8+i] <<" " << numeros_no_repe[9+i] <<" "<< numeros_no_repe[j]<< endl;
        //
            cout<< numeros_no_repe[0+i] <<" " << numeros_no_repe[2+i]  <<" "<< numeros_no_repe[6+i]<<" "  << numeros_no_repe[8+i] <<" " << numeros_no_repe[9+i] <<" "<< numeros_no_repe[j]<< endl;
              fs<< numeros_no_repe[0+i] <<" " << numeros_no_repe[2+i]  <<" "<< numeros_no_repe[6+i]<<" "  << numeros_no_repe[8+i] <<" " << numeros_no_repe[9+i] <<" "<< numeros_no_repe[j]<< endl;
       
             
       
        //
        }
      }
      cout<<endl;
      fs<<endl;
    }
  cout<<endl<<"Combinaciones totales: "<<combi<<endl;
  fs<<endl<<"Combinaciones totales: "<<combi<<endl;
  fs.close();
  system("pause");
  return EXIT_SUCCESS;
}


luis


En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Limitar rango de numeros en funcion
« Respuesta #1 en: 15 Abril 2013, 20:58 pm »

Hola tengo esta función que lo que hace es ordenar o digamos combinar una serie de números que introduzco.

y estoy buscando como hacer que no me combine mas de dos numeros de la misma serie ejemplo

12 17 21 24 25 26 < eliminar todo registro que tenga esta forma 21 24 25 26

12 18 22 84 85 86< como se ve que no permita tener mas de dos registros dentro de su rango

Con if se podria creo yo pero no encuentro la logica



Querido amigo Luis estas tirando piedras sobre tu propio tejado.

Me explico. No puedes pedir que de un número me pidas tomar los dos anteriores y los dos posteriores para combinarlos y luego pretender que no te salgan en las combinaciones "pegados". Fíjate que con tu "petición" ya aparecen cuatro números en la misma decena. Y la cosa se complica si entre los números que "entras" están, dos en la misma decena, por ejemplo, el 13 y el 18 ya que eso daría lugar a que entre los 36 números a tomar estén el 11, 12, 14, 15, 16,17, 19 y 20 ¡¡¡¡ocho números de la misma decena¡¡¡¡. Claro, al hacer las combinaciones lo normal es que aparezcan varios de la misma decena. Pero la estadística es así de caprichosa.

¿Pero cuando he dejado yo a un amigo "colgado" pendiente de una posible solución?. Ésta la tienes a mano, sin más que "separar" un poco más los números a imprimir y ahí está tu propio criterio de cuánto los separas, sin abandonar las ideas o condiciones que previamente habías puesto.

Fíjate que en la entrada que te presento hay tres"malos" por estar muy juntos, el 3 el 9 y el 15 y sin embargo la salida cumple meridianamente con tu propuesta, casi dos como máximo por decenas:

Código
  1. Ingrese el 1 numero: 3
  2. Ingrese el 2 numero: 9
  3. Ingrese el 3 numero: 15
  4. Ingrese el 4 numero: 23
  5. Ingrese el 5 numero: 36
  6. Números introducidos: 3 9 15 23 36
  7.  
  8.  
  9.  
  10. 1 2 4 5 6 7 8 10 11 12 13 14 16 17 18 20 21 22 24 25 26 33 34 35 37 38 39
  11.  
  12.  
  13. 1 10 14 20 22
  14. 1 10 14 20 25
  15. 1 10 14 20 33
  16. 1 10 14 20 35
  17. 1 10 14 20 38
  18.  
  19. 2 11 16 21 24
  20. 2 11 16 21 26
  21. 2 11 16 21 34
  22. 2 11 16 21 37
  23. 2 11 16 21 39
  24.  
  25. 4 12 17 22 25
  26. 4 12 17 22 33
  27. 4 12 17 22 35
  28. 4 12 17 22 38
  29.  
  30. 5 13 18 24 26
  31. 5 13 18 24 34
  32. 5 13 18 24 37
  33. 5 13 18 24 39
  34.  
  35. 6 14 20 25 33
  36. 6 14 20 25 35
  37. 6 14 20 25 38
  38.  
  39. 7 16 21 26 34
  40. 7 16 21 26 37
  41. 7 16 21 26 39
  42.  
  43. 8 17 22 33 35
  44. 8 17 22 33 38
  45.  
  46. 10 18 24 34 37
  47. 10 18 24 34 39
  48.  
  49. 11 20 25 35 38
  50.  
  51. 12 21 26 37 39
  52.  

¿Dónde está el secreto de este logro?. En el "cout" , fíjate bien que lo que hago es "distanciar" los elementos a tomar, presumiendo de antemano que algunos estarán muy juntos:

Código
  1. *******************************************************/
  2.     j=0;
  3.    for (i=0;i<=n-2*ver+1  ;i++){
  4.       //if (j>total) break;
  5.      for (j=17+i;j<n ;j+=2){
  6.        combi++;
  7.        if (numeros_no_repe[0+i]>0 && numeros_no_repe[j]<50  ){
  8.            cout<< numeros_no_repe[0+i] <<" " << numeros_no_repe[7+i] <<" "<< numeros_no_repe[11+i]<<" "  << numeros_no_repe[15+i] <<" " << numeros_no_repe[j]<< endl;
  9.  

Todo es "jugar" ahora con la separación que más probable consideres. Pero, siempre hay un pero en estadística, a cambio pierdes combinaciones posibles. Todo es cuestión de "medida".

Saluditos! ....


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
capicua de un rango de numeros
Programación C/C++
ryan parker 4 8,998 Último mensaje 4 Junio 2011, 18:48 pm
por ryan parker
Como puedo saber los números que faltan dentro del rango ? « 1 2 3 »
.NET (C#, VB.NET, ASP)
luis456 24 13,526 Último mensaje 28 Enero 2014, 11:43 am
por luis456
Comprobar rango de números
Programación Visual Basic
rapbyone 5 3,195 Último mensaje 16 Abril 2016, 09:36 am
por pkj
[PYTHON]¿Cómo guardar datos de un rango de números que genero con un While?
Scripting
4T1L4 2 3,239 Último mensaje 24 Octubre 2016, 15:23 pm
por 4T1L4
Convertir rango de números en binario con signo magnitud
Programación C/C++
djmorales 1 2,944 Último mensaje 5 Junio 2017, 19:59 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines