Krudener

Untitled

Sep 23rd, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. #define ERROR -1
  6. #define OK 0
  7. #define CORRECT_SCAN 1
  8.  
  9. void task_one(double *array, double *array_end, double mu)
  10. {
  11.     double *ptr = array;
  12.     while (ptr < array_end)
  13.     {
  14.         if (fabs(*ptr) < fabs(mu))
  15.         {
  16.             printf("hui %lf %lf \n ", *ptr, mu);
  17.             double *swap_ptr = ptr;
  18.             double *swap_ptr_step_ahead = swap_ptr;
  19.             swap_ptr_step_ahead++;
  20.             while (swap_ptr < array_end)
  21.             {
  22.                 printf("swap_ptr = %lf \n", *swap_ptr);
  23.                 swap_ptr = swap_ptr_step_ahead;
  24.                 swap_ptr++;
  25.                 swap_ptr_step_ahead++;
  26.             }
  27.             array_end--;
  28.         }
  29.         ptr++;
  30.     }
  31. }
  32.  
  33. double average_cubic_modules(double *array, double *array_end)
  34. {
  35.     double mu = 0;
  36.     int length = array_end - array;
  37.     for (double *ptr = array; ptr < array_end - 1; ptr++)
  38.     {
  39.         mu += pow(fabs(*ptr), 3) / length;
  40.         printf("mu = %lf \n", mu);
  41.     }
  42.     mu = cbrt(mu);
  43.     return mu;
  44. }
  45.  
  46. int input_array(double *array, double *array_end)
  47. {
  48.     printf("Please input array elements:");
  49.     if (array)
  50.     {
  51.         for (double *ptr = array; ptr < array_end; ptr++)
  52.         {
  53.             if (scanf("%lf", ptr) != CORRECT_SCAN)
  54.             {
  55.                 return ERROR;
  56.             }
  57.         }
  58.     }
  59.     else
  60.     {
  61.         return ERROR;
  62.     }
  63.     return OK;
  64. }
  65.  
  66. int main()
  67. {
  68.     printf("Please input n:");
  69.     int n;
  70.     if (scanf("%d", &n) != CORRECT_SCAN)
  71.     {
  72.         return ERROR;
  73.     }
  74.     double *array = malloc(n * sizeof(double));
  75.     double *array_end = array + n;
  76.     if (input_array(array, array_end) == ERROR)
  77.     {
  78.         return ERROR;
  79.     }
  80.     double mu = average_cubic_modules(array, array_end);
  81.     printf("mu = %lf \n", mu);
  82.     task_one(array, array_end, mu);
  83.     printf("\n");
  84.     for (double *ptr = array; ptr < array_end; ptr++)
  85.     {
  86.         printf("%lf ", *ptr);
  87.     }
  88.     free(array);
  89.     return OK;
  90. }
Add Comment
Please, Sign In to add comment