marcoshuck

Búsqueda y ordenamiento

Aug 16th, 2013
520
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.07 KB | None | 0 0
  1. /*******************************************************************************
  2.                            Búsqueda y Ordenamiento
  3.                                     by
  4.                             Marcos Andrés Huck
  5.                               2013 - UTN-FRP
  6.                             www.marcoshuck.com
  7. *******************************************************************************/
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <time.h>
  11.  
  12. #define MAX_SIZE_V 10
  13. /* Cantidad de elementos del vector */
  14. #define MAX_RAND 220
  15. /* Valor máximo del intervalo a generar */
  16. #define MIN_RAND 3
  17. /* Valor mínimo del intervalo a generar */
  18.  
  19. #define METODO 0
  20. /* 0: Metodo minimo sucesivos | 1: Metodo electronico */
  21. #define ORDENAMIENTO 1
  22. /* 0: Ascendente | 1: Descendente */
  23.  
  24. // Operación de vectores
  25. void generar_vector(int v[], int size);
  26. void mostrar_vector(int v[], int size);
  27. // Métodos
  28. void metodo_electronico(int v[], int size);
  29. void metodo_minimos(int v[], int size);
  30.  
  31. int main(int argc, char *argv[])
  32. {
  33.     int v[MAX_SIZE_V];  /* Vector */
  34.     printf("Vector de %d componentes:\n", MAX_SIZE_V);
  35.     generar_vector(v, MAX_SIZE_V);
  36.     mostrar_vector(v, MAX_SIZE_V);
  37.     printf("Rango de los elementos del vector enerado: [%d-%d]\n", MIN_RAND, MAX_RAND);
  38.     #if METODO == 0
  39.     metodo_minimos(v, MAX_SIZE_V);
  40.     printf("Vector ordenado: (minimos sucesivos)\n");
  41.     #elif METODO == 1
  42.     metodo_electronico(v, MAX_SIZE_V);
  43.     printf("Vector ordenado: (electronico)\n");
  44.     #endif
  45.     mostrar_vector(v, MAX_SIZE_V);
  46.     system("PAUSE>NULL");  
  47.     return 0;
  48. }
  49.  
  50. /* Generar vector */
  51. void generar_vector(int v[], int size)
  52. {
  53.     int i; /* Contador */
  54.     srand(time(0));
  55.     for(i = 0; i < size; i++)
  56.     {
  57.         v[i] = (rand()%(MAX_RAND - MIN_RAND+1)+MIN_RAND);
  58.     }
  59. }
  60.  
  61. /* Mostrar vector */
  62. void mostrar_vector(int v[], int size)
  63. {
  64.     int i;  /* Contador */
  65.     printf("[");
  66.     for(i = 0; i < size; i++)
  67.     {
  68.         if(i != size-1)
  69.             printf("%3d ", v[i]);
  70.         else
  71.             printf("%3d", v[i]);
  72.     }
  73.     printf("]\n\a");
  74. }
  75.  
  76. /* Método de minimos sucesivos */
  77. void metodo_minimos(int v[], int size)
  78. {
  79.     int i, /* Contador */
  80.     j, /* Contador */
  81.     aux; /* Variable auxiliar */
  82.     for(i = 0; i < size-1; i++)
  83.     {
  84.         for(j=i+1; j < size; j++)
  85.         {
  86.             #if ORDENAMIENTO == 0
  87.             if(v[i] > v[j])
  88.             #elif ORDENAMIENTO == 1
  89.             if(v[i] < v[j])
  90.             #endif
  91.             {
  92.                 aux = v[i];
  93.                 v[i] = v[j];
  94.                 v[j] = aux;
  95.             }
  96.         }
  97.     }
  98. }
  99.  
  100. /* Método electronico */
  101. void metodo_electronico(int v[], int size)
  102. {
  103.     int i, /* Contador */
  104.     aux; /* Variable auxiliar */
  105.     for(i = 0; i < size-1; i++)
  106.     {
  107.         #if ORDENAMIENTO == 0
  108.         if(v[i] > v[i+1])
  109.         #elif ORDENAMIENTO == 1
  110.         if(v[i] < v[i+1])
  111.         #endif
  112.         {
  113.             aux = v[i];
  114.             v[i] = v[i+1];
  115.             v[i+1] = aux;
  116.             if(i > 0)
  117.                 i=i-2;
  118.         }
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment