• Domingo 19 de Mayo de 2024, 17:29

Autor Tema:  Re: Duda con Struct  (Leído 876 veces)

kurko

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
    • http://www.kurko.tk
Re: Duda con Struct
« en: Miércoles 23 de Abril de 2003, 20:23 »
0
Una consultita
como puedo hacer ke el programa me imprima en pantalla unos numeros almacenados en un miembro de una estructura, en orden ascendente o descendente??

me explico

tengo una estructura hecha tipo biblio llamada libro[20]
y uno de sus miembros se llama libro[20].numero, dentro de este miembro, hay 20 numero distintos de tipo float almacendos.
Necesito ke el programa los imprima ordenados en forma ascendente y/o descendente.
ayudenme porfa. y muchas gracias por toda la ayuda.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Duda con Struct
« Respuesta #1 en: Miércoles 23 de Abril de 2003, 22:35 »
0
:lightsabre:Debes realizar una rutina que recorra la lista y la vaya ordenando, una vez hecho esto imprimes el array ordenado en un ciclo..este es un ejemplo:

#include<stdio.h>
#include<time.h>
 
Código: Text
  1.  
  2. struct lib
  3. {
  4.     int numero;
  5. };
  6.  
  7. void ordenar(struct lib *arreglo);
  8. void imprimir(struct lib *li);
  9.  
  10. int main()
  11. {
  12.   int i,menor, bandera=1;//0=ordenado
  13.   struct lib libro[20];
  14.   clrscr();    //limpiar
  15.   srand(time(0));//iniciar semilla aleatoria
  16.   /*srand(time(0)); nos asegura que siempre genere numeros
  17.   aleatorios diferentes, ya que de lo contrario siempre
  18.   generaria los mismos*/
  19.   for(i=0;i<20;i++)
  20.   {//se llena
  21.     libro[i].numero = rand()%1001;
  22.   }
  23.  
  24.   ordenar(libro);
  25.   imprimir(libro);
  26.   return 1;
  27. }
  28.  
  29.  
  30. //ordenamiento simple...
  31. void ordenar(struct lib *arreglo)
  32. {
  33.   int i;
  34.   int bandera = 1;//se parte de que esta ordenado
  35.   struct lib aux;
  36.  
  37.   while(bandera)
  38.   {
  39.     i=0;
  40.     bandera = 0;//se parte de desordenado
  41.     while(i<20)
  42.     {
  43.       if(arreglo[i].numero > arreglo[i+1].numero )
  44.       {
  45.          aux = arreglo[i];
  46.          arreglo[i] = arreglo[i+1];
  47.          arreglo[1+i] = aux;
  48.          bandera=1; //si entra es que no esta ordenado
  49.       }
  50.       i++;
  51.     }
  52.   }
  53. }
  54.  
  55. //imrpime libros
  56.  
  57. void imprimir(struct lib *li)
  58. {
  59.   int i=0;
  60.  
  61.   printf("n aL I S T A   D E   L I B R O Sa nn");
  62.   for(i=0;i<20;i++)
  63.   {
  64.      printf("Libro Nro%d: %dn",i,li[i].numero);
  65.   }
  66. }
  67.  
  68.  
el programa genera numeros aleatoriemente utiliza el metodo de ordenamiento llamado metodo de la burbuja, te recomiendo que te documentes al respecto de este metodo.
En cada funcion se pasa la estructura por referencia y no por valor.

suerte..me cuentas si tienes alguna duda.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io