Advertisement
Krudener

Untitled

Sep 23rd, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.17 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.     int flag = 0;
  13.     double temp;
  14.     while (ptr < *array_end)
  15.     {
  16.         if (fabs(*ptr) < fabs(mu))
  17.         {
  18.             flag = 1;
  19.             printf("task done %lf %lf \n ", *ptr, mu);
  20.             double *swap_ptr = ptr;
  21.             while (swap_ptr < *array_end)
  22.             {
  23.                 temp = *(swap_ptr + 1);
  24.                 *(swap_ptr + 1) = *swap_ptr;
  25.                 *swap_ptr = temp;
  26.                 swap_ptr++;
  27.             }
  28.             --(*array_end);
  29.         }
  30.         if (flag == 0)
  31.         {
  32.             ptr++;
  33.         }
  34.         else
  35.         { flag = 0; }
  36.     }
  37.     for (ptr = array; ptr < *array_end; ptr++)
  38.     {
  39.         printf("%lf ", *ptr);
  40.     }
  41. }
  42.  
  43. double average_cubic_modules(double *array, double *array_end)
  44. {
  45.     double mu = 0;
  46.     int length = array_end - array;
  47.     for (double *ptr = array; ptr < array_end - 1; ptr++)
  48.     {
  49.         mu += pow(fabs(*ptr), 3) / length;
  50.         printf("mu = %lf \n", mu);
  51.     }
  52.     mu = cbrt(mu);
  53.     return mu;
  54. }
  55.  
  56. int input_array(double *array, double *array_end)
  57. {
  58.     printf("Please input array elements:");
  59.     if (array)
  60.     {
  61.         for (double *ptr = array; ptr < array_end; ptr++)
  62.         {
  63.             if (scanf("%lf", ptr) != CORRECT_SCAN)
  64.             {
  65.                 return ERROR;
  66.             }
  67.         }
  68.     }
  69.     else
  70.     {
  71.         return ERROR;
  72.     }
  73.     return OK;
  74. }
  75.  
  76. int main()
  77. {
  78.     printf("Please input n:");
  79.     int n;
  80.     if (scanf("%d", &n) != CORRECT_SCAN)
  81.     {
  82.         return ERROR;
  83.     }
  84.     double *array = malloc(n * sizeof(double));
  85.     double *array_end = array + n;
  86.     if (input_array(array, array_end) == ERROR)
  87.     {
  88.         return ERROR;
  89.     }
  90.     double mu = average_cubic_modules(array, array_end);
  91.     printf("mu = %lf \n", mu);
  92.     task_one(array, &array_end, mu);
  93.     printf("\n");
  94.     for (double *ptr = array; ptr < array_end; ptr++)
  95.     {
  96.         printf("%lf ", *ptr);
  97.     }
  98.     free(array);
  99.     return OK;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement