Advertisement
Miquel_Fuster

main.c

Jan 1st, 2022
1,433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.94 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "seleccion.h"
  4.  
  5. #define CONTAR_ELEMENTOS(array) (sizeof(array)/sizeof(array[0]))
  6.  
  7. typedef struct {
  8.     char nombre[30];
  9.     unsigned edad;
  10. } persona_t;
  11.  
  12. int comparar_int_ascendente(const void *a, const void *b) {
  13.     return *(int*)a - *(int*)b;
  14. }
  15.  
  16. int comparar_int_descendente(const void *a, const void *b) {
  17.     return *(int*)b - *(int*)a;
  18. }
  19.  
  20. int comparar_float_ascendente(const void *a, const void *b) {
  21.     return *(float*)a - *(float*)b;
  22. }
  23.  
  24. int comparar_float_descendente(const void *a, const void *b) {
  25.     return *(float*)b - *(float*)a;
  26. }
  27.  
  28. int comparar_char_ascendente(const void *a, const void *b) {
  29.     return *(char*)a - *(char*)b;
  30. }
  31.  
  32. int comparar_char_descendente(const void *a, const void *b) {
  33.     return *(char*)b - *(char*)a;
  34. }
  35.  
  36. int comparar_persona_ascendente(const void *a, const void *b) {
  37.     return ((persona_t*)a)->edad - ((persona_t*)b)->edad;
  38. }
  39.  
  40. int comparar_persona_descendente(const void *a, const void *b) {
  41.     return ((persona_t*)b)->edad - ((persona_t*)a)->edad;
  42. }
  43.  
  44. int main() {
  45.     int array_int[] = {-3, 12, 0, -13, -3, 5, 123};
  46.     float array_float[] = {-12.234, 123.1232, -0, 412573843};
  47.     char array_char[] = {'q', 'w', 'i', 'e', 's', 'c'};
  48.     persona_t array_persona[] = {
  49.         {"Juan", 15},
  50.         {"Antonio", 43},
  51.         {"Isabel", 10},
  52.         {"Aura", 60},
  53.         {"Miguel", 43}
  54.     };
  55.  
  56.     /*****************************   ORDENAR ARRAY DE INTS  ********************************/
  57.  
  58.     printf("array_int sin ordenar: ");
  59.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_int); ++i) {
  60.         printf("%d", array_int[i]);
  61.         if(i < CONTAR_ELEMENTOS(array_int) - 1) {
  62.             printf(", ");
  63.         }
  64.     }
  65.  
  66.     ordenar(array_int, CONTAR_ELEMENTOS(array_int), sizeof(int), comparar_int_ascendente);
  67.    
  68.     printf("\narray_int ordenado ascendentemente: ");
  69.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_int); ++i) {
  70.         printf("%d", array_int[i]);
  71.         if(i < CONTAR_ELEMENTOS(array_int) - 1) {
  72.             printf(", ");
  73.         }
  74.     }
  75.  
  76.     ordenar(array_int, CONTAR_ELEMENTOS(array_int), sizeof(int), comparar_int_descendente);
  77.    
  78.     printf("\narray_int ordenado descendentemente: ");
  79.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_int); ++i) {
  80.         printf("%d", array_int[i]);
  81.         if(i < CONTAR_ELEMENTOS(array_int) - 1) {
  82.             printf(", ");
  83.         }
  84.     }
  85.  
  86.     /***************************  ORDENAR ARRAY DE FLOATS  ************************************/
  87.  
  88.     printf("\n\narray_float sin ordenar: ");
  89.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_float); ++i) {
  90.         printf("%f", array_float[i]);
  91.         if(i < CONTAR_ELEMENTOS(array_float) - 1) {
  92.             printf(", ");
  93.         }
  94.     }
  95.  
  96.     ordenar(array_float, CONTAR_ELEMENTOS(array_float), sizeof(float), comparar_float_ascendente);
  97.    
  98.     printf("\narray_flaot ordenado ascendentemente: ");
  99.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_float); ++i) {
  100.         printf("%f", array_float[i]);
  101.         if(i < CONTAR_ELEMENTOS(array_float) - 1) {
  102.             printf(", ");
  103.         }
  104.     }
  105.  
  106.     ordenar(array_float, CONTAR_ELEMENTOS(array_float), sizeof(float), comparar_float_descendente);
  107.    
  108.     printf("\narray_flaot ordenado descendentemente: ");
  109.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_float); ++i) {
  110.         printf("%f", array_float[i]);
  111.         if(i < CONTAR_ELEMENTOS(array_float) - 1) {
  112.             printf(", ");
  113.         }
  114.     }
  115.  
  116.     /***********************  ORDENAR ARRAY DE CHARS  *****************************************/
  117.  
  118.     printf("\n\narray_char sin ordenar: ");
  119.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_char); ++i) {
  120.         printf("%c", array_char[i]);
  121.         if(i < CONTAR_ELEMENTOS(array_char) - 1) {
  122.             printf(", ");
  123.         }
  124.     }
  125.  
  126.     ordenar(array_char, CONTAR_ELEMENTOS(array_char), sizeof(char), comparar_char_ascendente);
  127.    
  128.     printf("\narray_char ordenado ascendentemente: ");
  129.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_char); ++i) {
  130.         printf("%c", array_char[i]);
  131.         if(i < CONTAR_ELEMENTOS(array_char) - 1) {
  132.             printf(", ");
  133.         }
  134.     }
  135.  
  136.     ordenar(array_char, CONTAR_ELEMENTOS(array_char), sizeof(char), comparar_char_descendente);
  137.    
  138.     printf("\narray_char ordenado descendentemente: ");
  139.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_char); ++i) {
  140.         printf("%c", array_char[i]);
  141.         if(i < CONTAR_ELEMENTOS(array_char) - 1) {
  142.             printf(", ");
  143.         }
  144.     }
  145.  
  146.     /***********************  ORDENAR ARRAY DE PERSONA  *****************************************/
  147.  
  148.     puts("\n\narray_persona sin ordenar:");
  149.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_persona); ++i) {
  150.         printf("   %s de %u annos\n", array_persona[i].nombre, array_persona[i].edad);
  151.     }
  152.  
  153.     ordenar(array_persona, CONTAR_ELEMENTOS(array_persona), sizeof(persona_t), comparar_persona_ascendente);
  154.    
  155.     puts("\narray_persona ordenado ascendentemente:");
  156.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_persona); ++i) {
  157.         printf("   %s de %u annos\n", array_persona[i].nombre, array_persona[i].edad);
  158.     }
  159.  
  160.     ordenar(array_persona, CONTAR_ELEMENTOS(array_persona), sizeof(persona_t), comparar_persona_descendente);
  161.    
  162.     puts("\narray_persona ordenado descendentemente:");
  163.     for(size_t i=0; i<CONTAR_ELEMENTOS(array_persona); ++i) {
  164.         printf("   %s de %u annos\n", array_persona[i].nombre, array_persona[i].edad);
  165.     }
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement