Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/02/2015, 15:54
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: Ordenamiento con punteros a estructura en c , ordenamiento burbujeo.

Rufux Se trata de C. Viene especificado en el texto.

ElenaJuarez : Bienvenida al foro.

No se muy bien lo que quieres pero creo que es esto:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #define MAX_NOMBRES 100
  5. #define MAX_LETRAS  25
  6.  
  7.  
  8. struct BD{
  9.     char nombre[MAX_NOMBRES][MAX_LETRAS]; //100 nombres de maximo 24 caracteres( No ocupar el ultimo ;) )
  10. };
  11.  
  12. int main (){
  13.     int i, j;
  14.     struct BD *p, datos;
  15.     int temp = 0;
  16.     p = &datos;
  17.     //100 nombres de no mas de 24 caracteres. La usaremos para no estar rellenando a mano XD
  18.     char arreglo[MAX_NOMBRES][MAX_LETRAS] = {
  19.         "Karla"            , "Reyna"        , "Ana"            , "Gina"        , "Georgina"    ,  //linea1
  20.         "Joan"            , "Mario"        , "Enrique"        , "Maria"        , "Margo"        ,
  21.         "Lupe"            , "Guadalupe"    , "Erika"        , "Marcuz"        , "Raquel"        ,
  22.         "Leticia"        , "Carlos"        , "Luz"            , "Elena"        , "Pablo"        ,
  23.         "Jose"            , "Juan"        , "Pedro"        , "Xochil"        , "Pepe"        ,
  24.         "Kiju"            , "Rebeca"        , "Rodrigo"        , "Raul"        , "Adile"        ,
  25.         "Janeth"        , "Daniel"        , "Dante"        ,"Eduardo"        , "Emmanuel"    ,
  26.         "Esther"        , "Francia"        , "Federico"    , "Federica"    , "Fausto"        ,
  27.         "Gabriel"        , "Gustavo"        , "German"        , "Hugo"        , "Israel"        ,    
  28.         "Isabel"        , "Irma"        , "Lucia"        , "Lucy"        , "Luz"            ,
  29.         "Luis"            , "Luisa"        , "Lucrecia"    , "Marcos"        , "Manuel"        ,
  30.         "Manuela"        , "Mayla"        , "Nayla"        , "Teodoro"        , "Teofilo"        ,
  31.         "Teofilito"        , "Argenis"        , "Delia"        , "Jesus"        , "Jim"            ,
  32.         "Reyna"            , "Marce"        , "Paco"        , "Francisco"    , "Javier"        ,
  33.         "Xavier"        , "Johan"        , "Joana"        , "Johana"        , "Lourdes"        ,
  34.         "Rebeca"        , "Nathasa"        , "Elizabeth"    , "Miriam"        , "Yuri"        ,
  35.         "Dum"            , "Victor"        , "Victoria"    , "Marta"        , "Martin"        ,
  36.         "Mateo"            , "Matias"        , "Monica"        , "Moises"        , "Mirta"        ,
  37.         "Eloy"            , "Elsa"        , "Emilia"        , "Estela"        , "Querubin"    ,
  38.         "Casimiro"        , "Catalina"    , "Calletano"    , "Ignacio"        , "Zazaza"           //linea20
  39.     };
  40.  
  41.     //cargamos los nombres a la estructura de forma desordenada desde el puntero y lo imprimimos.
  42.     for ( i = 0; i < MAX_NOMBRES; i++ ) {
  43.         strcpy ( &(p->nombre[i][0]), arreglo[i]);
  44.         printf ( "\n %d \t%s", i+1, p->nombre[i] );
  45.     }
  46.    
  47.    
  48.     //Ordenamos los nombres
  49.     printf("\n\nOrdenando...\n\n");
  50.     for ( i = 0; i < MAX_NOMBRES; i++ ){
  51.         for ( j = 0; j < MAX_NOMBRES; j++ ) {
  52.             temp = strcmp ( &p->nombre[j][0], &p->nombre[j + 1][0] );
  53.            
  54.             if ( temp > 0 ) {
  55.                 strcpy ( p->nombre[0], p->nombre[j] );
  56.                 strcpy ( p->nombre[j], p->nombre[j + 1] );
  57.                 strcpy ( p->nombre[j + 1], p->nombre[0] );
  58.             }
  59.         }
  60.     }
  61.  
  62.     //volvemos a imprimir ordenados.
  63.     for ( i = 0; i < MAX_NOMBRES; i++ ) {
  64.         printf ( "\n %d \t%s", i + 1, p->nombre[i] );
  65.     }
  66.  
  67.     getchar();
  68.     return 0;
  69. }

Cuando tengas que hacer: *(puntero).nombre puedes hacerlo p->nombre"Es lo mismo" pero mas fácil.

En la estructura tengo 100 nombres de 25 letras cada. Nunca usamos la ultima en el caso de ser char.
luego creo un objeto de la estructura y hago que p apunte a ese objeto.

Luego de tener el puntero afinado le cargo los 100 nombres del arreglo para no tener que estar llenando nada a mano XD

Luego se ordena de forma parecida a la que comentas y luego después imprimimos el resultado.

No se si es esto lo que quieres... Espero que sirva

Suerte.