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


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Generar 6 números y ordenarlos en el mismo bucle(lenguaje C)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Generar 6 números y ordenarlos en el mismo bucle(lenguaje C)  (Leído 3,183 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Generar 6 números y ordenarlos en el mismo bucle(lenguaje C)
« en: 18 Septiembre 2014, 00:40 am »

Hola a todos.
El asunto es simple por lo menos para explicarlo, sólo que no se si se puede hacer, lo que quisiera saber es si en cada iteración además de generar los número ir ordenándolos, me parece que no quedaría del todo ordenado pero por lo menos ir intercambiando los posibles.-
El juego es de Argentina y se llama Quini6, los números a asertar son 6 y van del 0 al 45.-
En este caso no tiene mucho sentido porque el bucle se realiza sólo 6 veces, pero en el caso de generar por ejemplo 500.000 números tal vez acelere el tiempo que tardaría una manera y la otra.-
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4.  
  5. void generar();
  6.  
  7. int main(void){
  8. generar();
  9.  
  10. return 0;
  11. }
  12.  
  13. void generar(){
  14. int guardar[6], numero=0, i=0, hora = time(NULL);
  15. srand(hora);
  16.  
  17. for(; i<6; i++){
  18. numero = rand()%46;
  19. guardar[i] = numero;
  20. }
  21. }
   


Desde ya muchas gracias y muchos saludos.-
Daniel


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Generar 6 números y ordenarlos en el mismo bucle(lenguaje C)
« Respuesta #1 en: 18 Septiembre 2014, 02:25 am »

Haciendo uso de qsort podríamos ir ordenando sucesivamente los elementos generados, mas o menos así :

Código
  1. int comparar(const void * x, const void * y)
  2. {
  3.    return ( *(int*)x - *(int*)y );
  4. }
  5.  
  6. void generar(void)
  7. {
  8.    int guardar[6], numero = 0;
  9.    int i, hora = time(NULL);
  10.  
  11.    srand(hora);
  12.  
  13.    for (i = 0; i <= 6; i++)
  14.    {
  15.        numero = rand() % 46;
  16.  
  17.        guardar[i] = numero;
  18.  
  19.        qsort(guardar, i, sizeof(int), comparar);
  20.    }
  21. }
  22.  

Un Saludo


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Generar 6 números y ordenarlos en el mismo bucle(lenguaje C)
« Respuesta #2 en: 18 Septiembre 2014, 03:56 am »

lo que quisiera saber es si en cada iteración además de generar los número ir ordenándolos
No es necesario ordenarlos después de cada iteración, puedes hacerlo una vez generados todos los números (ya tienes un ejemplo del uso de qsort cortesía de Blaster).

Lo que si debes hacer es verificar que los números no se repitan, para ello lo mas sencillo es generar primero los cuarenta y seis números almacenándolos en un array y a continuación seleccionar seis aleatoriamente, por ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define MAX_ELEM  46
  6.  
  7. int main(void)
  8. {
  9.   int num[MAX_ELEM];
  10.   int num_elem = sizeof num / sizeof num[0];
  11.   int i;
  12.   int j;
  13.  
  14.   srand((unsigned) time(NULL));
  15.  
  16.   for (i = 0; i < MAX_ELEM; i++)
  17.      num[i] = i;
  18.  
  19.   for (i = 0; i < 6; i++){
  20.      j = rand() % num_elem;
  21.      printf("%2d\n", num[j]);
  22.  
  23.      num[j] = num[--num_elem];
  24.   }
  25.  
  26.   return EXIT_SUCCESS;
  27. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Generar 6 números y ordenarlos en el mismo bucle(lenguaje C)
« Respuesta #3 en: 18 Septiembre 2014, 16:51 pm »

Hola Blaster.
Muchas gracias por el aporte, funciona perfecto sólo que mi idea es ir intercambiando los números según corresponda y se vallan generando.-
Por ejemplo si guardar[0] es mayor a guardar[1] intercambiar a partir de la segunda iteración hasta finalizar, lo estoy intentando voy a ver cómo queda al finalizar el bucle, reitero no cambia el tiempo al hacerlo con 6 iteraciones, quiero experimentar con 500.000.-
Rir muy importante tú código me solucionó lo de los número repetidos, que era algo que tenía pendiente, lo voy a recorrer paso a paso para aprender algunas líneas que no me quedan claras.-   

Saludos.
Daniel   
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Generar 6 números y ordenarlos en el mismo bucle(lenguaje C)
« Respuesta #4 en: 18 Septiembre 2014, 17:30 pm »

mi idea es ir intercambiando los números según corresponda y se vallan generando.-
Por ejemplo si guardar[0] es mayor a guardar[1] intercambiar a partir de la segunda iteración hasta finalizar
No deberías hacerlo porque en el mejor escenario terminaras implementando el método de ordenacion por inserción y este tiene una eficiencia menor que Quicksort, mejor ordena la lista una vez hayas generado todos los valores.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Generar xml mediante bucle vb.net
.NET (C#, VB.NET, ASP)
NetJava 5 4,486 Último mensaje 30 Noviembre 2011, 17:37 pm
por Novlucker
GENERAR 6 NÚMEROS DEL 1 AL 40 QUE SUMADOS DEN 125 « 1 2 3 »
Programación Visual Basic
yolanda10 21 9,887 Último mensaje 30 Septiembre 2013, 20:13 pm
por Miseryk
Salir de un bucle while sin pulsar Ctrl + d [getchar -Lenguaje C]
Programación C/C++
NOB2014 2 2,974 Último mensaje 30 Noviembre 2015, 03:09 am
por NOB2014
Que diferencia hay en utilizar bucle for o while en lenguaje C. « 1 2 »
Programación C/C++
NOB2014 10 6,828 Último mensaje 20 Mayo 2016, 16:17 pm
por HardForo
[javascript] [Bucle For] invertir números en javascript.
Desarrollo Web
Ali Baba 3 10,880 Último mensaje 29 Mayo 2017, 10:00 am
por ThinkByYourself
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines