Advertisement
CaduUnb

Array_Ptr-Org.c

Mar 23rd, 2017
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.14 KB | None | 0 0
  1. /*
  2. @author: Caio E. C. de Oliveira.
  3.  
  4. Objetive: to organize an array:
  5.     Without creating another one;
  6.     Using only two pointers.
  7.  
  8. What's left: understand lines 45 and 65;
  9. */
  10. #include <stdio.h>
  11.  
  12. #define N 8
  13. //Functions declaration
  14. void get_data(int *array);
  15. void shows_original(int *array);
  16. void shows_increasing(int *DataArray);
  17. void shows_decreasing(int *DataArray);
  18.  
  19. int main()
  20. {
  21.     int DataArray[N];
  22.     get_data(DataArray);
  23.     shows_original(DataArray);
  24.     shows_increasing(DataArray);
  25.     shows_decreasing(DataArray);
  26.     printf("\n");
  27.     return 0;
  28. }
  29.  
  30. //lib.
  31. void get_data(int *array)
  32. {
  33.     int i;
  34.     printf("Include integers in the array:\n");
  35.     for(i=0;i<N;i++)
  36.     {
  37.         scanf("%d", &array[i]);
  38.     }
  39. }
  40. void shows_original(int *array)
  41. {
  42.     int i;
  43.     printf("array: original.\n");
  44.     for(i=0;i<N;i++)
  45.         printf("Inteiros: %d   || Endereco: %p\n", array[i], &array[i]);
  46.     printf("\n");
  47. }
  48. void shows_increasing(int* DataArray)
  49. {
  50.     int *next = DataArray, *ptr, *lastShown;
  51.     int *end = DataArray + N;
  52.     printf("Array, increasing_order:\n");
  53.     for(ptr=DataArray; ptr<end; ptr++)
  54.     {
  55.         if(*ptr<*next)  next = ptr;  //find smallest
  56.     }
  57.     for(lastShown=next, next = NULL; lastShown!=NULL; lastShown = next, next = NULL)
  58.     {
  59.         for(ptr = DataArray; ptr<end; ptr++)
  60.         {
  61.             if(*ptr==*lastShown)
  62.                 printf("%p: %d\n", ptr, *ptr);
  63.             else if(*ptr>*lastShown && (next==NULL || *ptr<*next))
  64.                 next = ptr;
  65.         }
  66.     }
  67. }
  68. void shows_decreasing(int* DataArray)
  69. {
  70.     int *next = DataArray, *ptr, *lastShown;
  71.     int *end = DataArray + N;
  72.     printf("Array, decreasing_order:\n");
  73.     for(ptr=DataArray; ptr<end;ptr++)
  74.     {
  75.         if(*ptr>*next)  next=ptr; //find greatest
  76.     }
  77.     for(lastShown=next, next=NULL; lastShown!=NULL; lastShown = next, next =NULL)
  78.     {
  79.         for(ptr=DataArray;ptr<end; ptr++)
  80.         {
  81.             if(*ptr==*lastShown)
  82.                 printf("%p: %d\n", ptr, *ptr);
  83.             else if(*ptr<*lastShown && (next==NULL || *ptr>*next))
  84.                 next = ptr;
  85.         }
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement