Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.99 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. struct dynamic_arr_t{
  5.  int* arr;
  6.  int size;
  7. };
  8.  
  9. struct dynamic_arr_t generate(int num);
  10. void free_dynamic_arr(struct dynamic_arr_t*);
  11. struct dynamic_arr_t filter_even(struct dynamic_arr_t);
  12. struct dynamic_arr_t filter_odds(struct dynamic_arr_t);
  13. struct dynamic_arr_t map_sqr(struct dynamic_arr_t);
  14. struct dynamic_arr_t sqr_of_odds(struct dynamic_arr_t);
  15. int reduce_sum(struct dynamic_arr_t arr);
  16. int SumOfgeneratedArray(struct dynamic_arr_t);
  17.  
  18. int main(){
  19.          ////////////////////////////////////////////////////////////////////////////////
  20.          struct dynamic_arr_t dynamic = generate(5);
  21.          printf("All elements from array:\n");
  22.          for(int i = 0; i < dynamic.size; i++){
  23.                     printf("%d ", dynamic.arr[i]);
  24.          }
  25.          printf("\n");
  26.          ////////////////////////////////////////////////////////////////////////////////  
  27.          struct dynamic_arr_t filter = filter_even(dynamic);
  28.          printf("All even elements:\n");
  29.          for(int i = 0; i < filter.size; i++){
  30.                     printf("%d ", filter.arr[i]);
  31.          }
  32.          printf("\n");
  33.          ////////////////////////////////////////////////////////////////////////////////
  34.          struct dynamic_arr_t mathSqr = map_sqr(dynamic);
  35.          printf("All elements of their square:\n");
  36.          for(int i = 0; i < mathSqr.size; i++){
  37.                     printf("%d ", mathSqr.arr[i]);
  38.          }
  39.          printf("\n");
  40.          ////////////////////////////////////////////////////////////////////////////////
  41.          struct dynamic_arr_t SqrOdds = sqr_of_odds(dynamic);
  42.          printf("All ODDS elements and their square:\n");
  43.          for(int i = 0; i < SqrOdds.size; i++){
  44.                     printf("%d ", SqrOdds.arr[i]);
  45.          }
  46.          printf("\n");
  47.              ////////////////////////////////////////////////////////////////////////////////
  48.          int sum = reduce_sum(dynamic);
  49.          printf("Sum of array:\n");
  50.          printf("%d\n", sum);
  51.          ////////////////////////////////////////////////////////////////////////////////    
  52.          struct dynamic_arr_t dynGen = generate(11);
  53.          int sumOfGEN = SumOfgeneratedArray(dynGen);
  54.          printf("Sum of generated array:\n");
  55.          printf("%d\n",sumOfGEN);
  56.              ////////////////////////////////////////////////////////////////////////////////
  57.             free_dynamic_arr(&dynGen);
  58.             free_dynamic_arr(&SqrOdds);
  59.             free_dynamic_arr(&mathSqr);
  60.             free_dynamic_arr(&filter);
  61.             free_dynamic_arr(&dynamic);
  62.        
  63.         return 0;
  64. }
  65.  
  66. int SumOfgeneratedArray(struct dynamic_arr_t gen){
  67.        // Generated numbers 1 to 11
  68.         struct dynamic_arr_t genFilter_even = filter_even(gen);
  69.         int sum = reduce_sum(genFilter_even);
  70.  
  71.         return sum;
  72. }      
  73.  
  74. int reduce_sum(struct dynamic_arr_t arr){
  75.         int sum = 0;
  76.         for(int i = 0; i < arr.size ; i++){
  77.                     sum += arr.arr[i];
  78.         }
  79. return sum;
  80. }
  81.  
  82. struct dynamic_arr_t sqr_of_odds(struct dynamic_arr_t dyn){
  83.    struct dynamic_arr_t numbers = generate(dyn.size);
  84.    numbers.size = dyn.size;
  85.    struct dynamic_arr_t odds = filter_even(numbers);
  86.    struct dynamic_arr_t SqrOfOdds = map_sqr(odds);
  87.  
  88.    return SqrOfOdds;
  89. }
  90.  
  91. struct dynamic_arr_t map_sqr(struct dynamic_arr_t dyn){
  92.    struct dynamic_arr_t mSqr = generate(dyn.size);
  93.    mSqr.size = dyn.size;
  94.  
  95.    for(int i = 0; i < dyn.size;i++){
  96.             mSqr.arr[i] = dyn.arr[i]*dyn.arr[i];
  97.    }
  98.  
  99.  return mSqr;
  100. }
  101.  
  102. struct dynamic_arr_t filter_even(struct dynamic_arr_t dyn){
  103.  
  104.   struct dynamic_arr_t resultFilter = generate(dyn.size);
  105.   resultFilter.size = 0;
  106.  
  107.   for(int i = 0; i < dyn.size; i++){
  108.             if(dyn.arr[i] % 2 != 0){
  109.                 resultFilter.arr[resultFilter.size] = dyn.arr[i];
  110.                 resultFilter.size ++;
  111.             }
  112.    }
  113.   return resultFilter;
  114. }
  115.  
  116. void free_dynamic_arr(struct dynamic_arr_t *freeLoaded){
  117.   free(freeLoaded->arr);
  118.   freeLoaded->arr = NULL;
  119.   freeLoaded->size = 0;
  120. }
  121.  
  122. struct dynamic_arr_t generate(int num){
  123.         struct dynamic_arr_t DynArray;
  124.  
  125.         DynArray.arr = malloc(num * sizeof(int));
  126.         DynArray.size = num;
  127.  
  128.         if(DynArray.arr == NULL){
  129.                 printf("Error\n");
  130.         }
  131.         for(int i = 0; i < num; i++){
  132.                 DynArray.arr[i] = i + 1;
  133.         }
  134.  return DynArray;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement