File: Stare vježbe/vjezbe10/66__pfunkcije_sort.c

  1. /*
  2.   66__pfunkcije_sort.c
  3.   Primjena pointera na funkciju za implementaciju rutine za sortiranje
  4.   int-ova po proizvoljno definiranom uredjaju.
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <malloc.h>
  10. #include <time.h>
  11.  
  12. int veci(int, int);
  13. int manji(int, int);
  14.  
  15. void sort(int *a, int n, int (*compare)(int, int))
  16. {
  17. int i, j, t;
  18. for(i = 0; i < n-1; i++)
  19. for(j = i+1; j < n; j++)
  20. if(compare(a[i], a[j])) {
  21. int t;
  22. t=a[i];
  23. a[i]=a[j];
  24. a[j]=t;
  25. };
  26. }
  27.  
  28. int main() {
  29. int n, k, *a;
  30.  
  31. printf("Unesite zeljenu velicinu niza brojeva: ");
  32. scanf("%d", &n);
  33. a = (int*) malloc(n*sizeof(int));
  34.  
  35. srand((unsigned)time(NULL));
  36. printf("Niz slucajnih brojeva [1-100]:\n");
  37. for (k = 0; k < n; k++) {
  38. a[k] = rand() % 100 + 1;
  39. printf("%d ", a[k]);
  40. }
  41. printf("\n");
  42.  
  43. sort(a, n, veci);
  44.  
  45. printf("\nNiz brojeva sortiran uzlazno:\n");
  46. for(k = 0; k < n; k++)
  47. printf("%d ", a[k]);
  48. printf("\n");
  49.  
  50. sort(a, n, manji);
  51.  
  52. printf("\nNiz brojeva sortiran silazno:\n");
  53. for(k = 0; k < n; k++)
  54. printf("%d ", a[k]);
  55. printf("\n");
  56.  
  57. free(a);
  58.  
  59. return 0;
  60. }
  61.  
  62. int veci(int x, int y) {
  63. return x>y;
  64. }
  65.  
  66. int manji(int x, int y) {
  67. return x<y;
  68. }
  69.